数据同步方法、存储介质及设备技术

技术编号:37677042 阅读:20 留言:0更新日期:2023-05-26 04:42
本发明专利技术提供了一种数据同步方法、存储介质及设备,该数据同步方法包括:从多个影子表中查找起始日志序号,将所述起始日志序号对应数据所在的影子表记为第一影子表;从所述第一影子表中抽取全部的增量数据,确定全部的增量数据中最大的日志序号,并将所述最大的日志序号记为数据断点;从其余影子表中抽取日志序号小于等于所述数据断点的增量数据;将从所述多个影子表中抽取的增量数据封装为一个分片,并存入中间文件。本发明专利技术的优点是只需记录一个数据断点即可在抽取增量数据使数据不重复、不缺失,有效保证了生产环境中数据的可靠性。有效保证了生产环境中数据的可靠性。有效保证了生产环境中数据的可靠性。

【技术实现步骤摘要】
数据同步方法、存储介质及设备


[0001]本专利技术涉及数据库
,特别是涉及一种数据同步方法、存储介质及设备。

技术介绍

[0002]在利用数据同步工具进行数据实时同步时分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。其中第二阶段和第三阶段会处于长时间并行状态。
[0003]在第二阶段增量数据同步时,通过分析数据库日志获取增量数据,从而实现数据实时同步是一种常用的实时复制技术。这种技术通过解析源数据库在线日志或者归档日志,获得数据的增删改变化,再将这些变化以事务为单位转换为同步软件内部特定的消息格式,通过数据同步软件的私有传输协议发送到目标端数据同步软件,最后目标端同步软件将获取到的事务日志恢复成目标数据库支持的SQL语句并在目标端数据库上执行,来实现数据的实时同步,保持源端和目标数据库的数据一致性。
[0004]在第二阶段的运行过程中,有些数据源的增量数据抽取直接通过解析数据库事务日志的方式进行,如Postgresql的WAL日志、Oracle的WAL日志,有些则依赖于数据库的机制进行,如Oracle的CDC、SQL Server的CDC等。
[0005]CDC的原理是将要进行增量抽取的表都创建一个对应的影子表,然后将增量数据写入到影子表当中,同步工具通过遍历查询这些表的数据来获取增量数据。为了防止重复读取,通常会在读取后删除影子表中的数据,但是有时候读取完成后,将数据删除时,读取到的数据还未到达下一个阶段就因为故障停止,这时内存中的数据丢失,影子表中的数据也丢失,再次启动时就会缺失这部分数据,这种情况在生产环境是不能容忍的,因此亟待解决此问题。

技术实现思路

[0006]本专利技术的一个目的是要提供一种能够克服上述问题或者部分地解决上述问题的数据同步方法、存储介质及设备。
[0007]本专利技术的一个进一步的目的是要及时的删除已经同步的数据,防止数据占用空间过大。
[0008]特别地,本专利技术提供了一种数据同步方法,包括:
[0009]从多个影子表中查找起始日志序号,将所述起始日志序号对应数据所在的影子表记为第一影子表,其中,所述多个影子表与待同步的多个数据表一一对应,并用于记录待同步的多个数据表的增量数据;
[0010]从所述第一影子表中抽取全部的增量数据,确定全部的增量数据中最大的日志序号,并将所述最大的日志序号记为数据断点;
[0011]从其余影子表中抽取日志序号小于等于所述数据断点的增量数据;
[0012]将从所述多个影子表中抽取的增量数据封装为一个分片,并存入中间文件。
[0013]可选地,数据同步方法还包括:
[0014]启动线程;
[0015]定时从所述中间文件的最后一个所述分片中获取数据断点;
[0016]删除所述多个影子表中日志序号小于等于所述数据断点的增量数据。
[0017]可选地,所述从多个影子表中查找起始日志序号的步骤包括:
[0018]从多个所述影子表中查找各所述增量数据的日志序号;
[0019]比较各所述增量数据的日志序号的大小;
[0020]将各所述增量数据中最小的日志序号作为起始日志序号。
[0021]可选地,所述日志序号被设置成二进制的值。
[0022]可选地,所述比较各所述增量数据的日志序号的大小的步骤包括:
[0023]将所述日志序号的前8位转换成日志对应的文件名,通过比较所述文件名的数字大小从而确定出所述日志序号的大小。
[0024]可选地,所述比较各所述增量数据的日志序号的大小的步骤还包括:
[0025]将所述日志序号的后8位转换成时间戳,在文件名相同的情况下,通过比较所述时间戳的大小从而确定出所述日志序号的大小。
[0026]可选地,数据同步方法还包括:
[0027]获取程序中途停止的事件;
[0028]从所述中间文件的最后一个所述分片中获取数据断点。
[0029]从大于所述数据断点的增量数据开始重新启动同步。
[0030]可选地,所述中间文件为磁盘文件KUFL。
[0031]根据本专利技术的另一个方面,本专利技术还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据上述中任一项所述的数据同步方法。
[0032]根据本专利技术的又一个方面,本专利技术还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据上述中任一项所述的数据同步方法。
[0033]本专利技术的数据同步方法,首先从多个影子表中查找起始日志序号,将起始日志序号对应数据所在的影子表记为第一影子表。再从第一影子表中抽取全部的增量数据,确定全部的增量数据中最大的日志序号,并将所述最大的日志序号记为数据断点。然后从其余影子表中抽取日志序号小于等于所述数据断点的增量数据。最后将从所述多个影子表中抽取的增量数据封装为一个分片,并存入中间文件。也就是说,本专利技术只需记录一个数据断点即可在抽取增量数据使数据不重复、不缺失,有效保证了生产环境中数据的可靠性。
[0034]进一步地,本专利技术的数据同步方法,在数据同步过程中,可以启动一个线程,再定时从中间文件的最后一个分片中获取数据断点,然后删除多个影子表中日志序号小于等于所述数据断点的增量数据。如此,可以较为及时的删除已经同步的数据,防止数据占用空间过大。
[0035]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明
了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0036]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0037]图1是根据本专利技术一个实施例的数据同步方法的流程图;
[0038]图2是根据本专利技术一个实施例的数据同步方法中从多个影子表中查找起始日志序号的流程图;
[0039]图3是根据本专利技术一个实施例的数据同步方法中断重启的流程图;
[0040]图4是根据本专利技术一个实施例的机器可读存储介质的示意图;
[0041]图5是根据本专利技术一个实施例的计算机设备的示意图。
具体实施方式
[0042]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保护范围。基于本专利技术提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本专利技术的保护范围之本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据同步方法,包括:从多个影子表中查找起始日志序号,将所述起始日志序号对应数据所在的影子表记为第一影子表,其中,所述多个影子表与待同步的多个数据表一一对应,并用于记录待同步的多个数据表的增量数据;从所述第一影子表中抽取全部的增量数据,确定全部的增量数据中最大的日志序号,并将所述最大的日志序号记为数据断点;从其余影子表中抽取日志序号小于等于所述数据断点的增量数据;将从所述多个影子表中抽取的增量数据封装为一个分片,并存入中间文件。2.根据权利要求1所述的数据同步方法,还包括:启动线程;定时从所述中间文件的最后一个所述分片中获取数据断点;删除所述多个影子表中日志序号小于等于所述数据断点的增量数据。3.根据权利要求1所述的数据同步方法,其中,所述从多个影子表中查找起始日志序号的步骤包括:从多个所述影子表中查找各所述增量数据的日志序号;比较各所述增量数据的日志序号的大小;将各所述增量数据中最小的日志序号作为起始日志序号。4.根据权利要求3所述的数据同步方法,其中,所述日志序号被设置成二进制的值。5.根据权利要求4所述的数据同步方...

【专利技术属性】
技术研发人员:魏乾王凯龙
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1