一种基于Oracle RAC集群与高级复制的数据可靠存储的方法
2016-02-05束爱华
◆王 丹 滕 达 束爱华
(中国电子科技集团公司第二十八研究所 江苏 210007)
一种基于Oracle RAC集群与高级复制的数据可靠存储的方法
◆王 丹 滕 达 束爱华
(中国电子科技集团公司第二十八研究所 江苏 210007)
本文说明了一种基于Oracle RAC集群与高级复制的数据可靠存储的方法,用于为指挥信息系统提供稳定高效的数据库支撑。
Oracle RAC集群;高级复制;指挥信息系统
0 引言
针对指挥信息系统大容量(TB级)业务数据高稳定性存储、调用的技术特点,我们采用Oracle RAC集群技术与高级复制技术结合使用的方法,完成对业务数据的冗余备份和数据同步,能够极大提高整套指挥信息系统的可用性。指挥信息系统采用三机集群方式,即三台核心处理服务器同时为前台客户端提供服务。Oracle RAC集群技术为其中两台服务器提供统一的共享数据,高级复制技术负责将第三台服务器上的数据进行同步,形成一个高可用系统体系,确保数据实时性和一致性,有效地降低了服务器负载过大的风险,提高了客户端数据访问的响应速度。
1 背景技术
1.1 指挥信息系统
指挥信息系统最重要的一个作用就是存储那些庞大且珍贵的数据信息,这些数据支撑着那些复杂密集的运算,支撑系统美丽多彩的动态画面,还有在后台默默地记录系统运转过程中的一点一滴。数据如此重要,所以数据的存储安全是重中之重。多年以来,一直选用ORACLE 数据库作为数据的存储平台,它功能强大并且稳定可靠。
指挥信息系统传统的Oracle数据库使用方式为,三台应用服务器上分别部署单实例数据库软件,三个数据库之间使用高级复制,达到数据同步的目的。然而近年来,伴随着网络带宽迅速提升、网络存储技术的迅速发展,越来越多的共享存储技术在信息系统中得到应用。尤其是指挥信息系统的三维显示技术的发展,使得传统的数据库方案不能满足系统需求;现在需要更加庞大的数据存储量,来支持海量的三维地理信息数据,还有更加安全、高效的数据访问能力。这时,Oracle的一个高端产品“RAC集群数据库”映入了开发者们的眼帘。
1.2 RAC
RAC,全称Real Application Cluster,特点是将多台计算机组织在一起、多个实例共享网络存储设备、同时对外提供服务,强项在于解决了单点故障和负载均衡[1]。
图1 Oracle RAC软件拓扑图
然而RAC也有它致命的一面,RAC环境中所有节点共享一个网络存储设备,一旦网络存储设备出现故障,数据库就面临全面瘫痪,也就是说网络存储设备存在单点故障隐患。所以还需要寻求另外的方法与RAC结合使用,来提高系统整体的可用性。
目前Oracle提供有高级复制、Data Guard和流复制等多种数据备份方案。经过了大量实验对比,最终选定采用高级复制技术与RAC技术相结合,来提高系统整体可用性。
2 具体实施方式
2.1 构建Oracle RAC集群与高级复制环境
目前,指挥信息系统多数采用服务器三机集群方式,即三台核心处理服务器同时为前台客户端提供服务。如图2,Oracle RAC集群技术为其中两台服务器提供统一的共享数据,高级复制技术负责将第三台服务器上的数据进行同步,形成一个高可用系统体系,确保数据实时性和一致性。并且通过建立数据库健康状态捕获机制,实现了RAC数据库和单实例数据库之间无缝切换,为客户端访问提供了更加稳定高效的数据支撑。
图2 Oracle RAC集群技术与高级复制技术结合使用结构图
构建RAC与高级复制结合方法如下:
(1)部署RAC数据库软件环境:在一号服务器和二号服务器上部署RAC数据库双节点集群软件环境。
①确定RAC双节点名称分别为server1和server2、以及Public NIC名和Private NIC名;
②选用ASM作为数据库存储技术;
③确定CRS集群件软件安装路径名为$CRS_HOME;
④确定RAC数据库软件安装路径名为$ORACLE_HOME、数据库服务名为RACDB;确定Voting 盘大小为1000MB、OCR盘大小为1000MB;
⑤确定系统运行所需的关键数据的物理文件存储路径为+DATAoradata、大小为3TB,海量三维地理信息数据的物理文件存储路径为+DATA1gworld、大小为20TB。
(2)部署单实例数据库软件环境。
①确定单实例数据库节点名称为server3;
②确定单实例数据库软件安装路径名为$ORACLE_HOME、数据库服务名为ora11;
③确定系统运行所需的关键数据的物理文件存储路径为/ora data。
(3)RAC数据库和单实例数据库之间部署高级复制。
①高级复制采用异步多主复制方案,参与复制的数据表在R AC数据库和单实例数据库之间对称复制,任一节点复制对象的更新都会被传播并被直接应用到另外一个节点的复制对象中,如果某一节点出现数据库故障,不影响另外一个健康节点的数据更新操作,在故障节点恢复之前,健康节点会将所有“复制事务”保存在本地def$_aqcall队列中,待故障节点恢复工作后,再执行[2]。
②高级复制搭建过程中,关闭RAC数据库server2节点数据库实例,只保留server1数据库实例单独运行,并将初始化参数cluster_database设置为false,这样能够有效提高高级复制对象的复制支持的生成速度。
至此,RAC数据库和单实例数据库之间部署高级复制完毕。
Oracle RAC集群与高级复制技术相结合,使得RAC数据库和单实例数据库互为备份[3],既避免了单纯RAC环境下由于网络存储设备发生故障而导致的系统全面瘫痪的隐患,又解决了单实例数据库的单点故障隐患;同时,将原系统中三节点高级复制降阶为两节点高级复制,降低了高级复制的耦合性,有效降低了数据同步过程中出错概率。
2.2 数据库健康状态捕获机制
为实现RAC数据库和单实例数据库之间无缝切换,使系统满足高可用性要求,我们还建立了数据库健康状态捕获机制。
如图3,系统运行时,数据库健康状态监控进程(DBMON)捕获数据库健康状态。当RAC数据库健康时,DBMON优先选择RAC数据库为客户端提供数据读写服务;一旦RAC数据库故障即RAC数据库健康心跳失效时,DBMON则选择单实例数据库为客户端提供数据读写服务;如此时单实例数据库也发生故障,则表明数据库系统全面瘫痪,程序警告退出。