李建荣,郝金库,张芝艳
(1.天津开发区职业技术学院 电子信息学院,天津 300457;2.天津师范大学 化学学院,天津 300387)
基于异构数据库的双机热备策略的设计与实现
李建荣1,郝金库2,张芝艳1
(1.天津开发区职业技术学院 电子信息学院,天津 300457;2.天津师范大学 化学学院,天津 300387)
提出一种基于异构数据库的双机热备软件解决方案,突破传统双机热备效率和可靠性低的瓶颈,把数据存放在2台异构数据库的服务器上,既保证了高效一致的存取数据,更全面地保护了数据的安全可靠.
异构数据库;双机热备;分布式事务
随着滨海新区作为中国北方经济增长第三极地位的确定,其在国内外的知名度不断提升,这些都在不断推动着本地旅游业的快速发展,滨海数字化旅游信息平台的建设对于优化天津滨海新区的旅游经济运作、吸引投资、提升区域竞争优势、激发滨海新区旅游产业的跨越式发展起着关键性作用.与此同时,旅游区政府、企业和旅游景点的发展对数据的依赖日益加深,确保数据安全、高效地存储成为当前信息存储的难点课题之一,而基于异构数据库的双机热备策略是一种保证数据库更安全、更可靠的解决方案[1].
传统的双机热备是基于active/standby方式的服务器热备.采用此方式的服务器数据和数据库数据同时向2台或多台服务器写入,或使用1个共享的存储设备,在同一时间内只有一台服务器运行.当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(如心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用[2].由于2台服务器是主备关系,因此传统双机热备所有写入和读取的操作都只能在一台服务器完成,在数据量非常大的情况下,数据存取效率达到边界值后就难以再提高.同时,一旦主服务器出现问题,由主库到备库的角色切换需要人工操作完成,且当主数据库的故障排除后,必须通过人工干预才能将备库上产生的新数据导入主库,造成启用备库时无法确保数据的无缝衔接[3].
而从安全性能角度考虑,由于传统双机热备中2台服务器的软硬件配置和数据库均相同,当一台服务器被恶意攻击时,另一台服务器也很难幸免,即采用相同的攻击手段就可以同时攻击2台服务器.而在基于异构数据库的双机热备策略中,2台服务器的数据库不同,一台数据库是Oracle 10g,另一台数据库是MySQL,因此,当一台数据库服务器遭受攻击时,另一台数据库会因异构而幸免,这样就可以全面保证数据的安全.
异构数据库是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统前就已经存在,拥有其自身的数据库管理系统(Database Management System,DBMS).异构数据库的各个组成部分具有自身的自治性,在实现数据共享的同时,每个数据库系统仍保持自身的应用特性、完整性控制和安全性控制[4].基于Oracle和MySQL异构数据库的双机热备的策略可以更稳妥地保证滨海数字化旅游信息平台的安全性能.
本方案采用3层分布式数据架构,客户端通过指定的IP和端口访问“中间业务层”服务器,发送业务请求,并根据客户端请求,由“中间业务层服务器”向分布在网络中的2个“数据库服务器”发出数据请求;取回相关数据后,再由“中间业务层服务器”发送回客户端,客户端无需直接访问“数据库服务器”,起到数据隔离的效果,保障了数据的安全性[5].系统架构如图1所示.
图1 系统框架图Fig.1 System framework
应用服务器同时监视2个异构数据库服务器,2台数据库服务器同时工作,数据分别存放在2台数据库服务器上,且要保证2台数据库服务器上数据一致.因此,在向2台服务器数据库上写入数据时,保证数据的一致就成为整个系统中的关键问题.为了解决这一问题,本策略引入了分布式事务的方法,将更新2台服务器数据库的命令加入到同一个分布式事务中,便可以保证数据的一致[6].图2是事务处理部分的流程图.
图2 事务处理流程图Fig.2 Transaction flow diagram
由图2可知,当客户端发出更新操作请求后,应用服务器首先分别向2个异构数据库建立连接,并分别创建命令;然后将2个命令加入到同一个分布式事务当中,分别执行,并提交事务.如果命令顺利执行,且事务提交没有出现问题,则说明2个服务器上的数据库出现了完全相同的更新操作,即保证了数据的一致.
如果一台数据库服务器宕机或出现故障,则程序会自动剔除坏掉的数据库服务器,客户端不会感觉到任何变化[7].而在故障服务器恢复功能时,如何将没有更新的数据在活动的数据库服务器进行同步操作是现有双机热备的难点之一.本研究的双机热备策略在推进故障数据库服务器时,采用3次复制数据功能.需要复制的数据为已经正确写入活动数据库服务器的数据,根据故障数据库服务器的日志列表,按照时间戳分3次进行复制数据.如现有200条记录需要复制,首先,进行第一次追赶,当追赶到200条时,活动数据库可能已经达到250条,因此继续第2次复制,即复制第200~250条记录,而此时活动数据库可能为260条记录,数据已经非常接近,因此,在进行第3次复制数据时,对2个数据库服务器进行瞬间的握手操作,使活动数据库写记录的命令瞬间停顿,实现数据完全同步推入故障数据库服务器,然后同时启动活动数据库写操作的命令,即可完成2个数据库服务器的数据同步.这一过程完全由程序完成,客户端不会有任何感觉.
分布式环境本身的复杂性和2个数据库的高度自治性造成任何数据库服务器出现故障或不规范数据操作都有可能导致全局数据的不一致,出现形式上的网络分割[8].当数据出现不一致时,在其恢复到一致状态前,任何需要与服务器进行交互的数据操作均不能进行.因此,发生故障后,迅速地恢复本地数据,并检测恢复全局数据对于分布式异构数据库系统具有至关重要的意义.
基于异构数据库的双机热备策略可以自动判断数据库是否出现故障,如果检测到某个数据库出现故障,则该数据库会自动退出,待数据库修复后,程序会在恰当的时机自动推入,以确保数据的同步.基于异构数据库的双机热备策略的关键代码如下:
本研究提出的基于异构数据库的双机热备策略是纯软件的解决方案,节约了硬件开支,成本很低.从性能角度考虑,双机热备的方式可以有效提高数据存取的效率,解决传统双机热备边界递减的问题.同时,三层架构和异构数据库为提高数据可靠性奠定了基础.本系统于2010年5月运行于滨海数字化旅游信息平台的开发建设中,经过实际的测试,被用户认可为一种低投入、高数据存取速度和高数据安全的解决方案.
[1] 孙蕾,徐洪泽.双机热备计算机联锁控制系统的安全性和可用性分析[J].中国安全科学学报,2004,14(7):30-33.
[2] 刘剑锋.武控系统双机热备份软件面向对象设计[D].成都:电子科技大学,2010:9-10.
[3] 蒋涛.一种面向客户端的双机热备机制的研究与实现[D].北京:北京交通大学,2011:6-9.
[4] 顾天竺,沈洁,陈晓红,等.基于XML的异构数据集成模式的研究[J].计算机应用研究,2007(4):94-96.
[5] 耿建平,李纳蓥,唐先红.使用VC++实现三层架构的分布式数据库应用框架[J].电脑编程技巧与维护,2003(8):57-59.
[6] 杨志伟.分布式数据库系统中的事务管理[J].内蒙古科技与经济,2008(4):84-85.
[7] 赵婷.基于Oracle Data Guard的双机热备策略的设计与实现[J].三峡大学学报:自然科学版,2010(12):89-91.
[8] 孙川.基于分布式事务的数据库双机热备份方案的设计[J].微计算机信息,2010,12(3):145-147.
Design and realization of dual hot-backup strategy based on heterogeneous database
LIJian-rong1,HAOJin-ku2,ZHANGZhi-yan1
(1.College of Electron Information,TEDA Polytechnic,Tianjin 300457,China;
2.College of Chemistry,Tianjin Normal University,Tianjin 300387,China)
A software solution based on heterogeneous database and dual hot-back technology is put forward.The solution breaks through the bottleneck of lower efficiency and reliability of traditional dual hot-backup system,and stores data on two heterogeneous database servers.Efficient and consistent data storage as well as safety and reliability of data are ensured.
heterogeneous database;dual hot-backup;distributed transactions
TP392
A
1671-1114(2012)03-0051-03
2011-02-10
天津市科委资助项目(2010-149)
李建荣(1975—),女,讲师,主要从事数据库开发和信息系统集成方面的研究.
(责任编校 亢原彬)