CN101719149B - 数据同步方法及装置 - Google Patents
数据同步方法及装置 Download PDFInfo
- Publication number
- CN101719149B CN101719149B CN200910241240XA CN200910241240A CN101719149B CN 101719149 B CN101719149 B CN 101719149B CN 200910241240X A CN200910241240X A CN 200910241240XA CN 200910241240 A CN200910241240 A CN 200910241240A CN 101719149 B CN101719149 B CN 101719149B
- Authority
- CN
- China
- Prior art keywords
- record
- log recording
- behavior
- processing
- instruction
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据同步的方法,包括:获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;根据获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。本发明实施例提供的数据同步方法通过读取源数据库的日志,解析针对源数据库的数据操作,并在目标数据库上执行相同的数据操作,实现数据库之间的数据同步。本发明实施例提供的数据同步方法及其装置降低了数据同步方法中的系统开销,提高了数据同步的实时性和准确性。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据同步方法及装置。
背景技术
随着计算机网络的发展,网上消费已经深入到人们的日常生活之中,相应的实时交易系统所处理的数据量不断增加。很多网络实时交易系统不得不将原来的一个数据库实例,按不同功能模块,分成两个或多个数据库实例,以降低数据库访问压力。比如,将数据库分为在线数据库和后线数据库,在线数据库负责联机交易处理,后线数据库负责批量交易、客服查询、统计分析等。
由于多个数据库实例的应用,导致了数据库之间的数据同步成为最关键的技术之一。通常需要将在线数据库同步到后线数据库,并且在同步时需要考虑实时性和正确性;同时,由于设计的功能不同,对应的表结构可能有所差异,需要在同步时能支持字段的映射(甚至一对多的映射)或者表名的映射(设置一对多、多对一的映射),并且也可能不是全部数据都同步,而是仅仅针对指定条件的数据进行同步。
现有的数据同步方法需要在实时交易时,单独记录数据的变化情况,并利用同步程序轮询数据变化情况,根据轮询的结果,将变化的数据从源数据库中取出,再对应的添加到目标数据库中。但是轮询源数据库表的变化情况会带来一定的系统开销,因此轮询周期的设定就存在两难的情况,轮询周期设得过长,会导致同步数据的滞后,目标数据库无法满足数据库同步的实时性需求;而轮询周期设置得过短,则会导致源数据库系统的巨大开销,从而影响源数据库的响应速度。
发明内容
本发明实施例提供一种数据同步方法及其装置,用以解决现有数据同步技术中系统开销过大的问题。
本发明实施例提供了一种数据同步的方法,包括:获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;根据获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。
本发明实施例提供了一种数据同步的装置,包括:操作日志记录获取单元,用于获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;数据同步单元,用于根据操作日志记录获取单元获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。
本发明实施例提供的数据同步方法及其装置,通过读取源数据库的日志,解析针对源数据库的数据操作,并在目标数据库上执行相同的数据操作,实现数据库之间的数据同步。本发明实施例提供的数据同步方法及其装置降低了数据同步方法中的系统开销,提高了数据同步的实时性和准确性。
附图说明
图1是本发明实施例1提供的数据同步方法的流程图;
图2是本发明实施例2提供的数据同步装置的结构示意图。
具体实施方式
本发明通过解析源数据库事务日志来提取数据变化情况,将其转换成SQL语句,并在目标数据库上执行,对目标数据库执行相同的数据操作,以此完成源数据库与目标数据库之间的数据同步。
数据库事务日志完整记录了源数据库发生的每一次数据变化,并且按照数据变化的时间顺序,记录了数据处理、事务提交、事务回滚等操作。事务日志可以准确的反应源数据库数据变化的顺序、内容以及事务的操作用户等信息。通过解析事务日志,可以完全再现导致数据变化的SQL语句,并将语句在目标数据库实例上运行,实现数据的同步;同时可以通过查看由解析日志得到的SQL语句和提交对应事务的用户,追溯每一个数据操作的来源,实现数据的监控。
本发明实施例1提供了一种数据同步方法,如图1所示,具体包括:
S101、获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;
通过调用数据库引擎提供的应用程序编程接口(API,ApplicationProgramming Interface),可以在源数据库中读取数据库的事务日志。为了提高效率,可以从源数据库中一次读取当前时刻之前一定时间长度内的所有事务日志记录。改时间长度由数据同步的实时性要求以及系统的处理能力决定。事务日志记录中包括针对数据库的操作的记录,为操作日志记录。操作日志记录的每条记录里包括了针对源数据库的操作行为和操作信息。
操作日志记录中针对数据的操作行为主要有:数据更新(insert/update/delete/undo insert/undo update/undo delete)和事务提交(commit)、回滚(rollback)等操作。可以通过读取的事务日志记录的二进制标识码将上述针对数据操作的日志记录与其他日志记录区分并将其读取出来。
为了提高整个操作的效率,可以采用多线程异步处理机制。当采用多线程机制时,读取线程在读取到事务日志记录后,将区分出来的操作日志记录压入“原始日志队列”。如果读取线程读取到的日志记录数量小于指定条数,则表明已经达到事务日志的末尾,此时,读取线程睡眠一段时间之后再重试读取。
S102、根据获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。
将得到的针对数据操作的操作日志记录,根据日志记录的类型、格式等对相应的日志记录进行解析处理,得到对源数据库中数据的操作行为和操作信息,将其转换为相应的对数据库进行数据处理的指令。可以是转换为相应SQL语句。
可以根据事务ID建立对应的日志记录列表,一般一个日志记录对应一个事务,当遇到大事务(一个事务下有很多条的日志记录)的情况下,所有操作针对的是同一个操作信息进行的,或者同样的操作行为针对不同的操作信息进行的,此时可以将大事务对应的所有操作日志记录进行合并处理。并且可以将对应的日志列表部分序列化保存到磁盘上,从而可以防止内存溢出;
在对源数据库的日志记录进行解析时,当出现撤销操作(undo)的日志记录时,则在日志记录中先前解析出针对数据库的操作中的找到对应的需要被撤销的操作,将两个操作合并,相互抵消,不必在目标数据库中执行,这样将有效地提高数据同步的处理效率;
当采用多线程异步处理机制时,从“原始日志队列”中提取操作日志记录,出现事务提交(commit)日志记录时,则将对应事务操作的日志记录,转换成原始SQL语句然后全部压入“已解析日志队列”(此操作根据“已解析日志队列”和“同步队列”中的日志数量动态处理,当“已解析日志队列”中记录过多时,可以将再现SQL语句的过程放到后续步骤中进行处理)。
遇到事务回滚日志记录时,则删除相应的操作日志记录对应的操作行为和操作信息,不进行数据同步,从而提高数据同步的效率。
在目标数据库中进行操作时,可以首先判断操作是否满足目标数据库的过滤条件(例如阻止针对某些数据内容的操作或者阻止某些固定的操作等),当不满足过滤条件时,操作不予执行;否则在目标数据库中执行源数据库中获得的操作日志记录对应的操作行为和操作信息,实现数据的同步。
当采用多线程异步处理机制时,从“已解析日志队列”中提取记录,由于不同的数据库表对应不同的“同步队列”和同步线程,所以,需要将具体的操作行为和操作信息或者转换得到的SQL语句等内容压入对应数据库表的“同步队列”(每个数据库表一个“同步队列”和一个同步线程);
数据库表的同步线程从“同步队列”中提取操作行为和操作信息,如果尚未转换成SQL语句,则根据操作行为和操作信息进行转换得到SQL语句,然后在目标数据库中执行相应的SQL语句,完成数据的同步。
对应于本发明实施例1提供的数据同步的方法,本发明实施例2提供了一种数据同步的装置,其结构示意图如图2所示,包括:
操作日志记录获取单元201,用于获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;
数据同步单元202,用于根据操作日志记录获取单元201获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。
数据同步单元包括:
记录合并处理子单元2021,根据操作日志记录获取单元201获得的操作日志记录中的每一条记录对应的操作行为和/或操作信息,对各条记录进行合并处理。
记录合并处理子单元2021用于将对应相同操作信息的操作行为和对应的撤销该操作行为分别所在的记录进行合并处理;
记录合并处理子单元2021还可以用于将各条记录中包含相同操作行为的记录进行合并处理;或者用于将各条记录中包含相同操作信息的记录进行合并处理。
数据同步子单元2022,用于基于记录合并处理子单元2021合并得到的各条记录中的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作。
数据同步单元202包括:
指令生成子单元2023,用于根据操作日志记录获取单元201获得的操作日志记录的每一条记录对应的操作行为和操作信息,生成对应的包括该操作信息的、具有指示目标数据库执行对应操作行为的指令;
数据同步子单元2024,用于基于指令生成子单元2023生成的指令对目标数据库执行对应的操作。
相对于现有的数据同步方法及设备,本发明实施例不需要轮询源数据库来得到每一个在线交易的记录,从而减少了对源数据库数据的访问次数,降低数据库压力的效果明显;并且能够满足数据同步的高实时性的要求。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (4)
1.一种数据同步的方法,其特征在于,包括:
获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;
根据获得的操作日志记录中的每一条记录对应的操作行为和/或操作信息,对各条记录进行合并处理;
基于合并后得到的各条记录中的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作;
其中,所述对各条记录进行合并处理,包括:
将对应相同操作信息的操作行为和对应的撤销操作行为分别所在的记录进行合并处理;
所述对目标数据库执行对应的操作,具体为:根据每一条记录对应的操作行为和操作信息,生成对应的包括该操作信息的、具有指示目标数据库执行对应操作行为的指令;以及基于生成的指令对目标数据库执行对应的操作;
其中,所述指令为基于SQL语句的指令。
2.如权利要求1所述的方法,其特征在于,所述对各条记录进行合并处理,还包括:
将各条记录中包含相同操作行为的记录进行合并处理;或
将各条记录中包含相同操作信息的记录进行合并处理。
3.一种数据同步的装置,其特征在于,包括操作日志记录获取单元和数据同步单元,其中:
操作日志记录获取单元,用于获得对应源数据库的操作日志记录,所述操作日志记录用于记录当前时刻之前的规定时长内对源数据库的各操作行为和操作信息;
数据同步单元,用于根据操作日志记录获取单元获得的操作日志记录的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作;
其中,所述数据同步单元包括:
记录合并处理子单元,根据操作日志记录获取单元获得的操作日志记录中的每一条记录对应的操作行为和/或操作信息,对各条记录进行合并处理;
数据同步子单元,用于基于记录合并处理子单元合并得到的各条记录中的每一条记录对应的操作行为和操作信息,对目标数据库执行对应的操作;
其中,所述记录合并处理子单元通过将对应相同操作信息的操作行为和对应的撤销操作行为分别所在的记录进行合并处理;
所述数据同步子单元包括:
指令生成子单元,用于根据操作日志记录获取单元获得的操作日志记录的每一条记录对应的操作行为和操作信息,生成对应的包括该操作信息的、具有指示目标数据库执行对应操作行为的指令;其中,所述指令为基于SQL语句的指令;
指令执行子单元,用于基于指令生成子单元生成的指令对目标数据库执行对应的操作。
4.如权利要求3所述的装置,其特征在于,所述记录合并处理子单元还用于通过将各条记录中包含相同操作行为的记录进行合并处理;或
通过将各条记录中包含相同操作信息的记录进行合并处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910241240XA CN101719149B (zh) | 2009-12-03 | 2009-12-03 | 数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910241240XA CN101719149B (zh) | 2009-12-03 | 2009-12-03 | 数据同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719149A CN101719149A (zh) | 2010-06-02 |
CN101719149B true CN101719149B (zh) | 2012-02-08 |
Family
ID=42433723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910241240XA Active CN101719149B (zh) | 2009-12-03 | 2009-12-03 | 数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101719149B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063511A (zh) * | 2011-01-21 | 2011-05-18 | 深圳市汉普电子技术开发有限公司 | 数据同步系统及方法 |
CN102629268B (zh) * | 2012-03-09 | 2014-12-17 | 华为技术有限公司 | 数据同步方法、系统及数据访问装置 |
CN102694693B (zh) * | 2012-06-28 | 2016-05-18 | 上海寰创通信科技股份有限公司 | 一种网管系统的日志记录方法 |
CN103778136A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种跨机房数据库同步方法及系统 |
CN102968479A (zh) * | 2012-11-19 | 2013-03-13 | 嘉兴电力局 | 跨安全区数据库备份方法 |
CN102970373B (zh) * | 2012-12-03 | 2015-11-11 | 亚信科技(中国)有限公司 | 一种数据同步方法、装置及系统 |
CN103929321A (zh) * | 2013-01-15 | 2014-07-16 | 腾讯科技(深圳)有限公司 | 一种日志处理方法和装置 |
CN103973727B (zh) * | 2013-01-28 | 2019-03-19 | 深圳市腾讯计算机系统有限公司 | 数据同步方法及装置 |
CN103744906A (zh) * | 2013-12-26 | 2014-04-23 | 乐视网信息技术(北京)股份有限公司 | 一种数据同步系统、方法及装置 |
CN103929472A (zh) * | 2014-03-21 | 2014-07-16 | 珠海多玩信息技术有限公司 | 数据处理方法、装置及系统 |
CN104978313A (zh) * | 2014-04-01 | 2015-10-14 | 中兴通讯股份有限公司 | 数据库系统的数据同步方法、装置及服务器 |
CN105338051B (zh) * | 2014-08-15 | 2018-09-18 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN104239476B (zh) * | 2014-09-04 | 2018-09-25 | 上海天脉聚源文化传媒有限公司 | 一种数据库同步的方法、装置及系统 |
CN104268234B (zh) * | 2014-09-26 | 2018-05-29 | 东软集团股份有限公司 | 一种基于sql语句的数据同步方法和装置 |
CN105589797B (zh) * | 2015-09-17 | 2018-06-22 | 中国银联股份有限公司 | 主从数据库间数据同步延时检测的方法 |
CN105955970A (zh) * | 2015-11-12 | 2016-09-21 | 中国银联股份有限公司 | 一种基于日志解析的数据库复制方法及装置 |
CN105512244B (zh) * | 2015-11-30 | 2019-03-01 | 北京京东尚科信息技术有限公司 | 基于消息队列实现数据库事务处理的方法及装置 |
CN106933703B (zh) * | 2015-12-30 | 2021-04-02 | 阿里巴巴集团控股有限公司 | 一种数据库数据备份的方法、装置及电子设备 |
CN105955848A (zh) * | 2016-05-05 | 2016-09-21 | 青岛海信移动通信技术股份有限公司 | 一种移动通信终端的信息备份方法和装置 |
CN107918621A (zh) * | 2016-10-10 | 2018-04-17 | 阿里巴巴集团控股有限公司 | 日志数据处理方法、装置及业务系统 |
WO2018126390A1 (zh) * | 2017-01-05 | 2018-07-12 | 深圳市前海中康汇融信息技术有限公司 | 基于触发器的数据库同步系统 |
WO2018126391A1 (zh) * | 2017-01-05 | 2018-07-12 | 深圳市前海中康汇融信息技术有限公司 | 基于触发器的数据库同步方法 |
CN110019498B (zh) * | 2017-08-14 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 日志同步方法及装置、存储介质、电子设备 |
CN109657007A (zh) * | 2018-12-17 | 2019-04-19 | 武汉达梦数据库有限公司 | 基于异步提交的数据库数据同步并行执行方法及设备 |
CN109829003A (zh) * | 2018-12-25 | 2019-05-31 | 北京市天元网络技术股份有限公司 | 数据库备份方法及装置 |
CN110704532A (zh) * | 2019-09-18 | 2020-01-17 | 南方电网数字电网研究院有限公司 | 数据库间的数据同步方法、装置、计算机设备及存储介质 |
CN111104409A (zh) * | 2019-12-25 | 2020-05-05 | 上海米哈游天命科技有限公司 | 一种数据库处理方法、装置、存储介质及电子设备 |
CN111694799B (zh) * | 2020-04-30 | 2023-04-25 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的并行日志解析方法和数据同步系统 |
CN111858504B (zh) * | 2020-06-04 | 2023-12-12 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的操作合并执行方法和数据同步系统 |
CN111782628A (zh) * | 2020-06-11 | 2020-10-16 | 国电南京自动化股份有限公司 | 电力系统实时库动态扩充增量的方法、配置工具和系统 |
CN112307118B (zh) * | 2020-09-30 | 2024-03-22 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的保障数据一致性的方法和同步系统 |
CN113220711A (zh) * | 2021-05-19 | 2021-08-06 | 李坚白 | 一种同步异构机器人控制器数据库的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633656A (zh) * | 2000-08-25 | 2005-06-29 | 艾利森电话股份有限公司 | 非时间相关的数据库同步 |
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
CN101551801A (zh) * | 2008-03-31 | 2009-10-07 | 国际商业机器公司 | 数据同步的方法和系统 |
-
2009
- 2009-12-03 CN CN200910241240XA patent/CN101719149B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633656A (zh) * | 2000-08-25 | 2005-06-29 | 艾利森电话股份有限公司 | 非时间相关的数据库同步 |
CN101551801A (zh) * | 2008-03-31 | 2009-10-07 | 国际商业机器公司 | 数据同步的方法和系统 |
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101719149A (zh) | 2010-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719149B (zh) | 数据同步方法及装置 | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
CN111400408B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN110489699B (zh) | 一种异步数据采集方法及系统 | |
CN111506559B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN110032594B (zh) | 可定制化的多源数据库的数据抽取方法、装置及存储介质 | |
CN109299074B (zh) | 一种基于模板化数据库视图的数据校验方法及系统 | |
EP2763055B1 (en) | A telecommunication method and mobile telecommunication device for providing data to a mobile application | |
CN112231407B (zh) | PostgreSQL数据库的DDL同步方法、装置、设备和介质 | |
CN107622068A (zh) | 一种基于json格式的日志管理方法及装置 | |
CN111046036A (zh) | 数据同步方法、装置、系统及存储介质 | |
CN105740295A (zh) | 一种分布式数据的处理方法及装置 | |
CN111753015B (zh) | 支付清算系统的数据查询方法及装置 | |
CN105630934A (zh) | 一种数据统计方法及系统 | |
CN113177090A (zh) | 数据处理方法及装置 | |
KR20080084332A (ko) | 데이터베이스 마이그레이션 장치 및 방법 | |
CN103440302B (zh) | 实时数据交换的方法和系统 | |
CN111144804A (zh) | 一种订单处理方法、装置及系统 | |
CN110569230A (zh) | 数据库设计模型与设计文档互相转换方法、系统及设备 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN103236938A (zh) | 一种基于缓存及异步处理技术的用户行为采集方法及系统 | |
US9092338B1 (en) | Multi-level caching event lookup | |
CN110019045B (zh) | 日志落地方法及装置 | |
CN108228592B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |