CN103970833B - 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 - Google Patents
一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 Download PDFInfo
- Publication number
- CN103970833B CN103970833B CN201410131529.7A CN201410131529A CN103970833B CN 103970833 B CN103970833 B CN 103970833B CN 201410131529 A CN201410131529 A CN 201410131529A CN 103970833 B CN103970833 B CN 103970833B
- Authority
- CN
- China
- Prior art keywords
- database
- data
- incremental data
- source
- incremental
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明公开了一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,包括以下步骤:在进行双向同步的数据库中分别建立特殊表;当增量数据由源数据库传输到目的数据库时,首先在目的数据库中插入一条特殊表数据,然后在目的数据库中执行完毕所有增量数据,最后在目的数据库手动提交增量数据事务;进行增量数据同步时具体操作如下:从日志中以事务为单位获取增量数据,检查事务中是否包含一条数据库B的特殊表B的插入数据,如果此条插入数据存在且数据的来源为数据库A,则不再将增量数据同步至数据库A;否则,将增量数据同步至数据库A。本发明在不影响数据库性能的同时,利用事务的原子性,简单方便地解决了数据循环的问题。
Description
技术领域
本发明涉及数据库同步技术领域,具体涉及一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法。
背景技术
数据库是IT架构中的一种基础构件,是对数据进行存储、管理的一种有效设施,现在几乎所有的应用都离不开数据库的支持。由于现在海量数据和数据访问地区分布不均衡,单个数据库已经不能承载所有的访问,一般需要在多个不同的地方分别部署一个数据库来提供服务,其中每一个数据库对外界来说都是数据完整和服务完整的,但是事实上每两个数据库之间的数据都是不一致的,所以这些不同地方的数据库之间就需要进行增量数据的同步来保证所有数据库的数据一致性和服务完整性。
增量数据是指一个数据库在某一段时间内产生或变化的数据,按照操作类型区分又分为插入数据、删除数据、修改数据,分别对应SQL中insert、delete、update操作。
数据库增量同步就是把增量数据从主数据库传输到从数据库中,以达到主从数据库的数据一致性,过程依次如下:获取A数据库的增量数据、传输到B数据库、在B数据库中执行SQL语句进行数据载入。
不同地方的活动数据库之间需要进行增量双向同步,即A数据库的增量数据需要同步到B数据库,同时B数据库的增量数据也需要同步到A数据库。
增量双向同步过程中会面临数据循环的问题,数据循环问题的产生是因为A数据库的增量数据同步到B数据库之后,这部分增量数据又会成为B数据库的增量数据再次同步到A数据库,然后这部分数据加上B数据库的增量数据又再次成为A数据库的增量数据,以此类推,增量数据就在不断增多、循环过程中。
解决增量双向同步过程中数据循环问题的关键是在A数据库的增量数据同步到B数据库之后,不允许这部分数据再次同步回A数据库,而解决问题的难点在于识别B数据库的增量数据到底是不是A数据库产生的。
发明内容
本发明提供了一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,在不影响数据库性能的同时,利用数据库事务的原子性,简单方便地解决了数据循环的问题。
一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,所述异构数据库同步系统包括至少两个能够进行双向同步的数据库,两个数据库进行增量数据传递时,其中一个为提供增量数据的源数据库,另一个为接收增量数据的目的数据库,包括以下步骤:
(1)在进行双向同步的数据库中分别建立特殊表,各个特殊表中用于记录所在数据库中增量数据的来源信息;
将所有进行双向同步的数据库的事务提交模式设定为手动事务提交模式;
(2)当增量数据由源数据库传输到目的数据库时,首先在目的数据库中插入一条特殊表数据,该条特殊表数据记载此次增量数据的来源信息,然后在目的数据库中执行完毕所有增量数据,最后在目的数据库手动提交增量数据事务;
(3)若两个能够进行双向同步的数据库分别为数据库A和数据库B,数据库A中建立有特殊表A,数据库B中建立有特殊表B,判断是否需要将数据库B中的增量数据同步至数据库A,具体操作如下:
从数据库B的日志中以事务为单位获取增量数据,检查事务中是否包含一条数据库B的特殊表B的插入数据,如果此条插入数据存在且此插入数据显示增量数据的来源为数据库A,则不再将增量数据同步至数据库A;否则,将增量数据同步至数据库A。
本发明的目的在于解决增量数据双向同步过程中的数据循环问题,因此,对于异构数据库中仅能实现单向同步的数据库的同步过程可以采用现有技术。
本发明所述的异构数据库同步系统中能够进行双向同步的数据库不允许3个及以上相互之间构成双向数据循环回路,例如,数据库A和数据库B进行双向同步,数据库B和数据库C进行双向同步,数据库C和数据库A进行双向同步,则数据库A、数据库B和数据库C构成3个数据库的双向数据循环回路。
所述特殊表为利用标准SQL建立的名称固定的表,各个特殊表中用于记录相应数据库中增量数据的来源信息,能够表征增量数据的来源信息的字段可以依据需要进行选择,例如,所述增量数据的来源信息包括三个字段,分别为主机IP、端口以及数据库名称。
为了保持异构数据库中各个特殊表的兼容性,表述增量数据来源信息的三个字段的数据类型均采用varchar。
每次记录增量数据的来源信息时,在特殊表中插入一条数据,数据包括能够表述该增量数据的来源信息的三个字段数据,分别为主机IP、端口以及数据库名称。
将增量数据事务提交模式设定为手动提交模式是为了保持数据库中增量数据和增量数据来源信息的一致性,执行整个增量数据事务后,由用户手动将增量数据提交到数据库中,使数据库发生变化,增量数据和增量数据来源信息一起被写入数据库。
首先从数据库B的日志中以事务为单位获取增量数据,然后检查事务中是否包含特殊表的插入数据,如果不存在,那么增量数据肯定不是来源于数据库A,如果存在,那么根据此条插入数据判断增量数据的来源是否为数据库A的方法为将数据来源信息的主机IP、端口以及数据库名称与数据库A的主机IP、端口以及数据库名称做比较,若三个字段均完全一致,则增量数据的来源为数据库A。
在特殊表中插入记录之后,所有操作包括特殊表中插入的记录,都会被记录在日志文件中,所以不需要保存特殊表的数据,为了防止数据表中的数据量过大,依据预定时间间隔清除特殊表中的记录。
本发明一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,在不影响数据库性能的同时,利用事务的原子性,简单方便地解决了数据循环的问题。
附图说明
图1为本发明基于日志的异构数据库同步系统中双向同步数据循环的解决方法的流程图。
具体实施方式
下面结合附图,对本发明一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法做详细描述。
本发明适用的异构数据库同步系统包括至少两个能够进行双向同步的数据库,若某两个数据库仅能进行单向同步,则采用现有技术,若某两个数据库能够进行双向同步,则采用本发明的方法避免产生数据增量双向同步中的数据循环问题。
为便于叙述,以下以能够进行双向同步的数据库A和数据库B为例,详述同步方法,如图1所示,具体包括以下步骤:
(1)在数据库A中建立特殊表A,特殊表A中用于记录数据库A中增量数据的来源信息;在数据库B中建立特殊表B,特殊表B中用于记录数据库B中增量数据的来源信息。
特殊表为标准SQL建立的一个名称固定的表,包括能够表述增量数据来源信息的主机IP、端口、数据库名称三个字段,为了数据库之间的兼容性,使用varchar作为特殊表中所有字段的数据类型。
建立特殊表的SQL语句为:create table database_sync(host_str varchar(50),port_str varchar(50),database_str varchar(50))。
(2)来自数据库A的增量数据传输到数据库B,将数据库B中的事务提交模式设定为手动提交模式,首先在数据库B中执行插入一条特殊表数据(该条数据记载此次增量数据的来源信息),然后执行所有的增量数据,最后手动将事务提交到数据库B。
插入数据记录增量数据的来源信息,插入数据包括增量数据来源数据库所对应的主机IP、端口和数据库名称,分别对应特殊表B中的三个字段,每个字段均为字符串类型。
(3)首先从数据库B中的日志中以事务为单位获取增量数据,然后检查事务中是否包含一条特殊表B的插入数据,若需要将数据库B中的增量数据同步到数据库A,则进行以下判断:
a)、若事务中不包含一条特殊表B中的插入数据,则将相应数据同步至数据库A;
增量数据可能来自于数据库的同步,也可能来自于用户的操作,即用户对数据库中的数据做插入、删除或者修改,若增量数据来自于数据库的同步,则该增量数据有来源记录;若增量数据来自于用户的操作,则该增量数据没有来源记录,所有没有来源信息的增量数据都需要同步至数据库A。
b)、若事务中包含一条特殊表B中的插入数据记录,但此插入数据显示增量数据的来源并非数据库A,则将相应数据同步至数据库A;
若特殊表B中的插入数据记录的增量数据来源信息的主机IP、端口以及数据库名称与数据库A的主机IP、端口以及数据库名称不完全一致或者完全不一致,则该增量数据不是数据库A的增量数据,需要同步至数据库A;
c)、若事务中包含一条特殊表B中的插入数据记录,且此插入数据显示增量数据的来源为数据库A,则不再将数据同步至数据库A;
若特殊表B中的插入数据记录的增量数据来源信息的主机IP、端口以及数据库名称与数据库A的主机IP、端口以及数据库名称做比较,若三个字段均完全一致,则数据的来源为数据库A。
(4)若需要将数据库A中的增量数据同步到数据库B中,则采取和步骤(3)相类似的操作。
(5)启动一个守护线程定时清除特殊表的数据,防止特殊表中的数据量过大。
Claims (2)
1.一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法,所述异构数据库同步系统包括至少两个能够进行双向同步的数据库,两个数据库进行增量数据传递时,其中一个为提供增量数据的源数据库,另一个为接收增量数据的目的数据库,其特征在于,包括以下步骤:
(1)在进行双向同步的数据库中分别建立特殊表,各个特殊表中用于记录所在数据库中增量数据的来源信息;
将所有进行双向同步的数据库的事务提交模式设定为手动事务提交模式;
(2)当增量数据由源数据库传输到目的数据库时,首先在目的数据库中插入一条特殊表数据,该条特殊表数据记载此次增量数据的来源信息,然后在目的数据库中执行完毕所有增量数据,最后在目的数据库手动提交增量数据事务;
(3)若两个能够进行双向同步的数据库分别为数据库A和数据库B,数据库A中建立有特殊表A,数据库B中建立有特殊表B,判断是否需要将数据库B中的增量数据同步至数据库A,具体操作如下:
从数据库B的日志中以事务为单位获取增量数据,检查事务中是否包含一条数据库B的特殊表B的插入数据,如果此条插入数据存在且此插入数据显示增量数据的来源为数据库A,则不再将增量数据同步至数据库A;否则,将增量数据同步至数据库A;
所述增量数据的来源信息包括三个字段数据,分别为主机IP、端口以及数据库名称;
表述增量数据来源信息的三个字段的数据类型均采用varchar;
判断数据的来源是否为数据库A,将数据来源信息的主机IP、端口以及数据库名称与数据库A的主机IP、端口以及数据库名称做比较,若三个字段均完全一致,则数据的来源为数据库A。
2.如权利要求1所述的基于日志的异构数据库同步系统中双向同步数据循环的解决方法,其特征在于,依据预定时间间隔清除特殊表中的记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410131529.7A CN103970833B (zh) | 2014-04-02 | 2014-04-02 | 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410131529.7A CN103970833B (zh) | 2014-04-02 | 2014-04-02 | 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970833A CN103970833A (zh) | 2014-08-06 |
CN103970833B true CN103970833B (zh) | 2017-08-15 |
Family
ID=51240330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410131529.7A Active CN103970833B (zh) | 2014-04-02 | 2014-04-02 | 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103970833B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346479A (zh) * | 2014-11-26 | 2015-02-11 | 北京奇虎科技有限公司 | 一种数据库同步方法及装置 |
CN105893386B (zh) * | 2015-01-04 | 2021-08-06 | 伊姆西Ip控股有限责任公司 | 用于在同步复制系统中处理事务的方法和装置 |
CN105005618A (zh) * | 2015-07-21 | 2015-10-28 | 杭州合众数据技术有限公司 | 一种异构数据库之间的数据同步方法及系统 |
CN105488115A (zh) * | 2015-11-23 | 2016-04-13 | 北京奇虎科技有限公司 | 数据库的数据操作的方法及装置 |
CN107038195B (zh) * | 2015-12-17 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 数据同步方法和装置 |
CN106294837A (zh) * | 2016-01-21 | 2017-01-04 | 华南师范大学 | 一种数据库增量数据转换迁移方法和系统 |
CN106383906B (zh) * | 2016-09-30 | 2020-12-11 | 杭州数梦工场科技有限公司 | 优化Oracle数据库数据增量捕捉的方法和系统 |
CN107247727A (zh) * | 2017-04-28 | 2017-10-13 | 北京五八信息技术有限公司 | 数据迁移方法及设备 |
CN107330003A (zh) * | 2017-06-12 | 2017-11-07 | 上海藤榕网络科技有限公司 | 数据同步方法、系统、存储器及数据同步设备 |
CN108920698B (zh) * | 2018-07-16 | 2020-11-03 | 京东数字科技控股有限公司 | 一种数据同步方法、装置、系统、介质及电子设备 |
CN109005246B (zh) * | 2018-09-12 | 2021-10-01 | 北京国电通网络技术有限公司 | 一种数据的同步方法、装置及系统 |
CN110347746B (zh) * | 2019-06-13 | 2020-06-26 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
CN111291008B (zh) * | 2020-01-22 | 2023-04-25 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、系统、电子设备及计算机存储介质 |
CN112035463B (zh) * | 2020-07-22 | 2023-07-21 | 武汉达梦数据库股份有限公司 | 基于日志解析的异构数据库的双向同步方法和同步装置 |
CN114756628B (zh) * | 2022-06-16 | 2022-10-28 | 天津七一二移动通信有限公司 | 一种高复用可扩展的数据及文件同步的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000075813A1 (en) * | 1999-06-08 | 2000-12-14 | Iti, Inc. | Bidirectional database replication scheme for controlling ping-ponging |
CN102436486A (zh) * | 2011-10-31 | 2012-05-02 | 北京人大金仓信息技术股份有限公司 | 基于数据库会话变量的数据双向复制方法 |
CN103092871A (zh) * | 2011-11-01 | 2013-05-08 | 镇江华扬信息科技有限公司 | 一种实现异构数据库的数据同步方法 |
-
2014
- 2014-04-02 CN CN201410131529.7A patent/CN103970833B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000075813A1 (en) * | 1999-06-08 | 2000-12-14 | Iti, Inc. | Bidirectional database replication scheme for controlling ping-ponging |
CN102436486A (zh) * | 2011-10-31 | 2012-05-02 | 北京人大金仓信息技术股份有限公司 | 基于数据库会话变量的数据双向复制方法 |
CN103092871A (zh) * | 2011-11-01 | 2013-05-08 | 镇江华扬信息科技有限公司 | 一种实现异构数据库的数据同步方法 |
Non-Patent Citations (2)
Title |
---|
"From uni-directional model transformation to incremental model synchronization";Fatemeh Hassani et al.;《Software Engineering (MySEC), 2011 5th Malaysian Conference in IEEE》;20111214;全文 * |
"异构环境下数据库增量同步更新机制";王玉标 等;《计算机工程与设计》;20110719;第32卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103970833A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103970833B (zh) | 一种基于日志的异构数据库同步系统中双向同步数据循环的解决方法 | |
CN105243067B (zh) | 一种实现实时增量同步数据的方法及装置 | |
CN104699541B (zh) | 同步数据的方法、装置、数据传输组件及系统 | |
JP6521402B2 (ja) | KeyValueデータベースのデータテーブルを更新するための方法およびテーブルデータを更新するための装置 | |
CN109271452B (zh) | Db2数据库数据同步更新方法及设备 | |
CN107229721B (zh) | 一种变更数据抽取的方法及装置 | |
CN108536752B (zh) | 一种数据同步方法、装置和设备 | |
CN104965879B (zh) | 修改数据表的表结构的方法及装置 | |
EP3079078A1 (en) | Multi-version concurrency control method in database, and database system | |
CN107609188B (zh) | 基于GoldenGate的数据同步校验方法 | |
CN110209728A (zh) | 一种分布式异构数据库同步方法、电子设备及存储介质 | |
JP2021068470A (ja) | データベースのための遠隔データ同期方法及び装置 | |
CN105279285B (zh) | 一种关系型数据库与非关系型数据库的同步系统及方法 | |
CN110222114B (zh) | 数据库中数据双向同步的方法及设备 | |
CN104317944B (zh) | 一种基于公式的时间戳动态调整并发控制方法 | |
CN103970834A (zh) | 一种异构数据库同步系统中增量数据同步故障的恢复方法 | |
WO2019222399A1 (en) | Conflict resolution in distributed computing | |
US8280847B2 (en) | Apparatus, method, and computer program product for synchronizing data sources | |
CN103106200B (zh) | 非关系型数据库同步系统及双写同步方法 | |
CN104063468A (zh) | 一种数据报表自动生成及提取方法及装置 | |
WO2015085901A1 (zh) | 一种文件传输方法、设备以及相关系统 | |
CN109462661A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN109165259B (zh) | 基于网络附属存储的索引表更新方法、处理器及存储装置 | |
CN106649756A (zh) | 日志同步方法及装置 | |
CN111159020A (zh) | 一种应用于同步软件测试的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |