基于RAC与DATAGUARD技术的数据库高可用性研究
2014-07-17亓微微
亓微微
目前,国内外对数据库高可用性领域的研究,主要还是集中在双机集群、RAC、DATAGUARD这几种独立技术的研究上。而事实上,每一种单独的技术,都有其自身的弱点,仅仅依靠一种技术,是无法将数据库的高可用性演绎得淋漓尽致的。本文主要介绍RAC和DATAGUARD两种技术各自的特点,然后论证结合RAC与DATAGUARD技术在高可用性领域的可行性方案。然后分别从主机,存储等各方面模拟出数据库故障,来验证此高可用性方案的可靠性,证明此方案优于目前业内常用的一些数据库高可用性方案。
RAC技术DATAGUARD技术双机集群本文首先讲解RAC与DATAGUARD技术的各自原理,然后研究利用ORACLE数据库的RAC和DATAGUARD技术,实现在企业级数据库高可用性领域的应用。
要解决的关键技术问题:
(1)实现RAC技术的failover功能
Failover功能,是RAC技术的核心功能之一。即当RAC数据库的某一个节点出现故障后,这个故障节点上运行的所有应用会自动切换至其它节点上继续运行,整个切换过程对用户而言是透明的。
(2)实现RAC技术和DATAGUARD技术的完美结合
RAC技术,可以解决除了存储故障外的所有问题。如果不巧恰恰是存储出现故障,这时,就可以借用DATAGUARD技术,将数据库系统切换至备用主机,保持业务的正常运行。在这个物理架构中,DATAGUARD的主库是一套RAC数据库,而DATAGUARD备库却是一个单节点的数据库,如何将RAC数据库切换到单节点的备库是需要解决的关键技术难题。
1 Oracle RAC透明切换特性
TAF,英文全称:Transparent Application Failover,是net层透明故障转移,是一种被动的故障转移方式,它主要依赖于VIP。可以通过客户端和服务器端两种方式配置TAF的策略。
下面主要介绍客户端配置TAF的方式:
控制TAF策略的参数说明:
FAILOVER:
Failover控制开关(on/off),如果为off,不提供故障切换功能,但连接时会对address列表进行依次尝试,直到找到可用为止。它有两种类型:session/select。
Session:
提供session级别的故障切换。会话可以正常切换到其他节点,但查询没有继续完成,也就是说查询的结果没有全部出来,只出来数据库关闭前的数据。
Select:
提供select级别的故障切换。切换过程对查询语句透明,但事物类处理需要回滚操作。
RETRIES:
故障切换时重试次数。
DELAY:
故障切换时重试间隔时间。
2 DATAGUARD技术原理
Oracle dataguard是当前保护企业级核心数据最有效的解决方案,它能够在7*24的基础上可用,无论是否发生灾难或其他中断,oracle dataguard技术都是实现企业业务连续性基础架构中的一个关键因素。
Oracle dataguard使备用数据库保持为与生产数据库在事务上一致的副本。这些备用数据库可位于距生产数据中心数千里以外的远程灾难恢复[6]站点。当生产数据库由于计划中断或意外中断而变得不可用时,dataguard可以将任意备用数据库切换为生产角色,从而使用与中断相关的停机时间送到最小,并防止任何的数据丢失。
Dataguard技术支持两种不同的备用数据库,分别是物理备用数据库(也称重做日志应用备库)和逻辑备用数据库(也称SQL重用数备库)。无特殊说明,本文重点介绍物理备用数据库。
物理备用数据库通过接收,应用来自主数据库的重做日志,实现与主数据库的数据同步。它在物理上与主数据库具有相同的数据块,因而数据库模式都是相同的。
3 RAC+DATAGUARD方案的理论研究
在本方案中,我们的主数据库是一个RAC数据库,而基于方案成本的考虑,备用数据库是一个单节点的数据库。如果可能,备用数据库也可以是一个RAC数据库。
在正常情况下,如图3.1所示,所有的应用程序都分别连接到主RAC数据库的两个实例上,同时开启RAC的负载均衡和透明切换功能,应用程序必须使用VIP来连接数据库。应用程序的事务产生的任何数据变化,都会通过dataguard机制同步至备用数据库上,使备用数据库始终与主RAC数据库保持一致。
如果主RAC数据库的某个节点出现类似应用故障,主机故障,网络故障,此时,该节点上的VIP会自动漂移至该RAC数据库的其他节点上,已经连接在发生故障的节点上的会话,会通过透明切换的功能,将这些会话转移至其他安全的节点上继续运行。而这些错误的发生,对应用程序而言没有任何影响,不需要做任何修改,应用程序就可以继续在主RAC数据库上继续运行。
如果主RAC数据库的存储设备出现故障,此时,则主RAC数据库将完全停止,需要对主RAC数据库的存储设备进行恢复才可以继续使用,同时,应用程序也将全部中断,会影响到业务的继续运行。这时,我们可迅速激活备用数据库(因为备用数据库的数据与主RAC数据库的数据始终保持一致,所以激活备用数据库,即可以恢复业务。),然后修改应用程序的数据库连接串,将连接串地址从以前的主RAC数据库地址修改为现在的备用数据库地址,这样就可以在最短的时间内恢复业务。研究结论:
当主RAC数据库出现应用,主机,网络等方面的故障时,此方案可以做到0业务中断;而当主RAC数据库出现存储方面的故障时,此方案需要临时中断业务。业务中断时间=max(备用数据库激活时间,应用程序的数据库连接串修改时间)。
在极限情况下,此数据库高可用性方案也会业务中断,但此方案的业务中断时间远远低于以前的高可用性方案。
4测试RAC+DATAGUARD高可用性方案的容灾能力
4.1模拟主RAC库的主机故障测试方案的容灾能力
(1)问题提出
当主RAC数据库的某个节点主机出现故障,如:CPU,磁盘,内存等故障,导致该节点停机,此时,连接在这个节点上运行的会话是否会被中断?
(2)解决方案
在Oracle RAC环境下,在配置TAF(Transparent Application Failover)之后,如果一个节点上的实例出现了故障,Oracle会自动将会话漂移到另一个实例上,保持业务的正常运行。
前面已经介绍过,配置RAC的透明切换功能有两种方式,在客户端配置或在服务器配置。下面在客户端的tnsname.ora文件中配置TAF,内容如下:
ZYXDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.203.100.98)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.203.100.99)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = zyxdb)
endprint