基于Oracle Data Guard的双机热备策略的设计与实现

2010-05-15 11:30
三峡大学学报(自然科学版) 2010年6期
关键词:热备双机备份

赵 婷

(中船重工集团公司第七二二研究所,武汉 430205)

伴随着信息化的持续推进,政府、企业的生产、经营对信息系统的依赖越来越紧密,信息数据的安全和业务运行的可靠性越来越重要,对于军用数据更是如此.双机热备就是一种保证数据库安全、高可靠性的解决方案.

1 当前双机热备技术的缺陷

一般的双机热备都是在磁盘阵列的基础上进行的,数据库放在共享的存储设备上,当一台服务器提供服务时,直接在存储设备上进行读写,而当系统切换后,另一台服务器也同样读取该存储设备上的数据[1],但是由于磁盘阵列等技术并未通过军方认证,只能采用纯软件的方式进行.

Oracle Data Guard就是一种纯软方式的解决方案,它是内置于Oracle数据库的一个功能模块,它创建、维护和监控一个或多个备用数据库,以保护企业数据结构不受故障、灾难、错误和崩溃的影响[2].正常情况下应用程序只连接主数据库,主数据库的数据能够近实时地同步到备数据库,当主数据库出现故障,Data Guard能够实现主库到备库的无缝切换,从而使与中断相关的停机时间减到最少,并防止任何数据丢失.

但是主库到备库的角色切换是需要人工操作来完成的,而且当主数据库故障排除后,必须经过人工干预才能避免出现两台都是主库的情况,而在备库上产生的新数据也必须通过人工操作才能导入到主库.

而某型舰的网络管理系统的使用者是军方,使用时经常出现不规范的情况,导致主备库经常切换.但是由于使用者身份特殊,大多数情况下技术人员无法上舰进行人工维护,这样如果不加入策略实现计算机全自动维护,单靠Oracle Data Guard难以保证数据的安全可靠的.因此如何在不增加硬件的条件下保护数据信息安全、保证业务系统的实时性和高可用性成为严峻的挑战.某型舰的网络管理系统利用Oracle的Data Guard技术,结合自身系统的实际情况,设计并实现了无需人工干预的数据库双机热备和容灾策略,全面保证了数据的安全.

2 策略设计方案

如图1所示,网络管理软件的应用服务器与两个数据库相连(数据库服务器安装Linux操作系统,采用Oracle 10i数据库),两个数据库利用Data Guard进行双机热备,并互为主备.

图1 系统框架图

应用服务器同时监视两个数据库服务器,如果一台宕机或者未开机,则自动切换到另外一台数据库,客户端不会感觉到任何变化.

对于两台数据库服务器来说,需要编写shell脚本,也就是加入策略,并结合Data Guard自身机制,来避免因用户操作不规范或数据库服务器出现异常而导致主备切换混乱的情况.例如用户会随机开启某台数据库服务器,而另一台长期关闭;又或者主机宕机后另一台备机升级为主机,主机故障排除后开机,这样就出现了两台服务器都是主机的情况.

图2是一部分策略的流程,该策略的主要功能是避免出现两台都是主机或者两台都是备机的情况,这些脚本同时在两台数据库服务器上运行.

图2 部分策略流程图

(1)首先在系统文件夹中加入如下配置文件用于策略的实施:①w ritedb.ini:用于记录修改数据库的时间,这个是在应用程序中写入,当应用软件对数据库进行增加/修改/删除的操作时,写入变更时间;②status.ini:用于记录本机是主机还是备机;③switchstatus.ini:当备机切换为主机时,加入识别标志,避免出现两台主机的情况;④sendchange.ini:通过w ritedb.ini进行时间判断,发现本机时间为最新,则在该文件中加入识别标志,让对机降为备机.

(2)开机后检查整个网络是否连通,如果不通,则两台数据库状态保持不变;如果连通,则要查看status.ini文件,判断是主机还是备机:①如果是备机且不能连通主机,则升级为主机,给switchstatus.ini文件打标,修改status.ini是主;如果备机能够连通主机,则两台数据库状态保持不变;②如果是主机且不能连通备机,则两台数据库状态保持不变;如果主机能够连通备机,则要根据w ritedb.ini文件的内容,判断哪个数据库上的数据最新.如果主机最新,则修改sendchange.ini文件,发送给对机,让对机降为备机;如果备机最新,则主机做rman操作,降为备机,修改status.ini是备.

3 关键技术实现

3.1 Data Guard双机热备的实现

(1)强制数据库以logging的方式打开.

主库上安装完数据库后,将主数据库修改为归档模式:alter database archivelog;alter database force logging.

(2)在主、备库上面建立备份使用的目录.

(3)在主库上面创建pfile,以后备库上面将会使用这个文件.

SQL>create pfile='/oradata/primary/primary.ora'from spfile;修改主库上面的pfile文件以便适应data guard环境.

(4)在主库上面通过rman创建备份集.

RMAN>BACKUP DEVICETYPEDISK FORMAT'/oradata/oracle/stage/recover_%U'DATABASE PLUS ARCHIVELOG.

(5)创建备库上面的 standby控制文件(在主机做).

RMAN>BACKUP DEVICETYPEDISK FORMAT'/oradata/oracle/stage/%U'CURRENT CONT ROLFILE FOR STANDBY.

(6)拷贝上面制作完成的备份集到备份机上面.

[oracle@ldTest primary]$scp/oradata/oracle/stage/*168.4.24.225:/oradata/oracle/stage/.

(7)在备库上面修改传过去的pfile内容.

(8)创建备库上的复制实例.

在备用数据库机器相应位置上面建立udump、bdump、cdump目录,用来存放Oracle的跟踪文件和警告文件.

利用RMAN复制实例:RMAN>DUPLICATE TARGET DATABASE FOR STANDBY nofilenamecheck.

(9)启动 standby模式.

将备用数据库启动为standby模式,并且将备用数据库处于管理恢复模式,即自动应用模式.当主数据库传送归档文件过来,备用数据库立即应用此归档文件,使备用数据库和主数据库保持同步.

3.2 部分策略(Shell脚本)的实现

(10)备机ping主机,如果主机不通,则升级为主机,并修改status.ini文件.

(11)两台都是主机,则比较 write.ini文件,如果备机最新,则主机做rman操作,降为备机.

4 实际应用情况

经过第三方软件测试机构(信息产业部华东软件测评中心)的测试,这套双机热备和容灾策略能够很好地实现无人工干预下的主备切换,并能保证数据的完整性.

[1]张贵芳.基于双机热备技术的水利邮件系统备份方法探讨[J].河南水利与南水北调,2010(1):46-47.

[2]黄 健.基于Oracle Data Guard的容灾策略设计与实现[J].科技广场,2006,11:72-73.

猜你喜欢
热备双机备份
“备份”25年:邓清明圆梦
热备动车组配置方案优化模型
东海区实时海洋观测数据库双机热备系统解决方案
创建vSphere 备份任务
双机、双桨轴系下水前的安装工艺
一种应用于分布式网络的地址分配及热备技术
双机牵引ZDJ9道岔不同步问题的处理
Loader轴在双机桁架机械手上的应用
旧瓶装新酒天宫二号从备份变实验室
热备冗余技术在焦化设备上的应用