一种数据库事务粒度同步方法

文档序号:9818286阅读:338来源:国知局
一种数据库事务粒度同步方法【
技术领域
】[0001]本发明属于电力系统信息化及自动化领域,主要涉及数据库之间的实时同步进行数据交换的方法。【
背景技术
】[0002]随着国家电网公司SG-ERP工程的建设,国家电网公司在三集五大、两中心、信息平台、综合分析决策等方面都建设了相关的应用系统,信息系统架构更加复杂。为了保证不同业务系统之间的数据一致性,必须解决业务系统间的数据交换的问题,而通过业务系统数据库之间的实时同步便是解决该问题的可行途径之一。[0003]传统的数据库复制原理是抽取源端数据库的重做日志(redolog)或者归档日志(archivelog),然后通过TCP/IP传输到目标端,最后在目标端对接收到的日志进行解析,并装载到数据库中,从而保证源数据库和目标数据库的数据一致性。如《基于GoldenGate高级复制技术实现数据库同步》(《甘肃科技》2012年第24期,曹建辉)或者《基于OracleDataguard的数据同步机制及其实现》(信息技术与信息化2009,19(3):88-90,吴勇军、孟小锋)中所述的方法。[0004]然而传统的数据库同步复制方法往往以SQL语句作为单位进行日志的处理与传输,因为复杂的“回滚”机制,性能受到很大的限制。同时,TCP/IP的传输速率也制约着数据库的同步效率,如何提高数据传输速率来增加数据库同步复制的效率也成为需要关注的问题。【
发明内容】[0005]本发明目的是:针对现有技术中的不足,解决国家电网公司网络环境下,如何在保证数据一致性和完整性的情况下高效地进行数据库同步复制以满足业务系统复杂的数据交换需求的问题,提供一种数据库事务粒度同步方法。[0006]具体地说,本发明是采用以下技术方案实现的,包括以下步骤:[0007]I)获取源端数据库的重做日志,在线分析获得SQL语句和数据,完成数据库级别、对象集合级别或表级别的数据复制,然后以“事务”为单位进行跟踪,只处理已经提交的交易,对于回滚操作则不做处理;[0008]2)对要同步的数据表进行上锁操作,记录系统改变号,然后进行解锁操作并根据系统改变号获取表数据;[0009]3)将数据转化为即时消息总线支持的格式,利用即时消息总线传输表数据;[0010]4)目标端接收数据,解析接收到的数据,然后在数据库中装载数据,实现数据库的同步。[0011]上述技术方案的进一步特征在于,源端数据库为Oracle、MYSQL、PostgreSQL数据库。[0012]本发明的有益效果如下:本发明解决了电力系统网络环境下位于不同安全区域的不同业务系统数据库之间的数据同步、数据交换问题。由于采用了以“事务”为单位的日志解析技术,减少了数据的传输量,在保证一致性和完整性的情况下,提高了数据库同步复制的效率。数据传输时采用了即时消息总线,可以保证数据传输的安全性以及传输的效率。【附图说明】[0013]图1是解析重做日志的原理图。[0014]图2是本发明以事务为单位保障数据一致性的原理图。[0015]图3是本发明方法在读写分离场景下运用的实施例图。[0016]图4是本发明方法在容灾场景下运用的实施例图。【具体实施方式】[0017]下面结合实施例并参照附图对本发明作进一步详细描述。[0018]本发明的一个实施例,在国家电网公司的网络中使用,通过本实施例完成电力行业各业务系统数据库之间的数据同步。本实施例采用的技术方案主要包含两个部分:首先,对日志的整合和传输以“事务”为单位,无需处理复杂的“回滚”机制。使用该技术,在拥有高性能的同时还能够更好的保持数据复制的一致性和完整性。其次,对于数据库日志的传输选用了即时消息总线。因为国家电网公司规划使用即时消息总线子系统来进行数据的传输,所以通过即时消息总线子系统可以保证数据安全。同时,即时消息总线子系统有着更高的传输速率,可以大幅提升数据库同步复制的效率。本实施例支持源端为OracIe、MYSQL、PostgreSQL数据库,目标端支持任意数据库,在进行同步时,原数据库不停止运行,完全实现在线数据同步。[0019]具体而言,本实施例包括如下步骤:[0020]步骤A:获取源端数据库的重做日志,在线分析获得SQL语句和数据,完成数据库级另Ij(DataBase级别)、对象集合级别(schema级别)或表级别(table级别)的数据复制。解析重做日志的原理如图1所示。然后以“事务”为单位进行跟踪,只处理已经提交的交易,对于回滚操作则不做处理,这样可以少抓取大约2/3的日志变化量。图2体现了通过以“事务”为单位能够保障数据一致性的原理。[0021]步骤B:对要同步的数据表进行上锁操作,记录系统改变号(如Oracle数据库同步时刻的SCN,Oraclesystemchangenumber),然后进行解锁操作并根据系统改变号获取表数据。[0022]步骤C:将数据转化为即时消息总线支持的格式,调用即时消息总线,传输表数据。[0023]步骤D:目标端接收数据,解析接收到的数据,然后在数据库中装载数据,实现数据库的同步。[0024]以下以本实施例在读写分离场景和容灾场景下的具体运用为例进行具体说明。[0025]图3为读写分离场景,在该场景下数据库同步方式为:[0026]步骤1:应用程序A写源数据库,修改数据库表。该源数据库为Oracle数据库。[0027]步骤2:复制节点读取数据库变化,通过即时消息总线发送到目标数据库所在服务器上的复制节点。[0028]步骤3:复制节点收到数据,通过分析,加载数据到本地数据库。[0029]步骤4:应用程序B读取数据库内容。[0030]图4为容灾场景,在该场景下数据库同步方式为:[0031]步骤1:应用程序写业务数据库,修改数据库表。该业务数据库为Oracle数据库。[0032]步骤2:复制节点读取数据库变化,通过即时消息总线发送到灾备数据库所在服务器上的复制节点。[0033]步骤3:复制节点收到数据,通过分析,加载数据到灾备数据库。[0034]虽然本发明已以较佳实施例公开如上,但实施例并不是用来限定本发明的。在不脱离本发明之精神和范围内,所做的任何等效变化或润饰,同样属于本发明之保护范围。因此本发明的保护范围应当以本申请的权利要求所界定的内容为标准。【主权项】1.一种数据库事务粒度同步方法,其特征在于,包括以下步骤:1)获取源端数据库的重做日志,在线分析获得SQL语句和数据,完成数据库级别对象集合级别或表级别的数据复制,然后以“事务”为单位进行跟踪,只处理已经提交的交易,对于回滚操作则不做处理;2)对要同步的数据表进行上锁操作,记录系统改变号,然后进行解锁操作并根据系统改变号获取表数据;3)将数据转化为即时消息总线支持的格式,利用即时消息总线传输表数据;4)目标端接收数据,解析接收到的数据,然后在数据库中装载数据,实现数据库的同步。2.根据权利要求1所述的数据事务粒度同步方法,其特征在于,源端数据库为Oracle、MYSQL、PostgreSQL数据库。【专利摘要】本发明公开了一种数据库事务粒度同步方法,属于电力系统信息化及自动化领域。本发明包含下列内容:对日志的整合和传输以“事务”为单位,无需处理复杂的“回滚”机制,可以在保证一致性和完整性的情况下高效的进行数据库同步;选用了即时消息总线保证了数据安全的同时还有着更高的传输速率,本发明有利于提高数据库同步复制的效率,具有良好的运用前景。【IPC分类】G06Q50/06,G06F17/30【公开号】CN105589924【申请号】CN201510821052【发明人】朱礼程,曹健【申请人】江苏瑞中数据股份有限公司【公开日】2016年5月18日【申请日】2015年11月23日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1