一种基于源库不停机的异构数据库增量同步方法及系统技术方案

技术编号:30834185 阅读:21 留言:0更新日期:2021-11-18 12:55
本发明专利技术提供了一种基于源库不停机的异构数据库增量同步方法及系统,具体步骤如下:开启数据捕获,监控源端数据库的最新变化,捕获增量数据,并将增量数据发送到临时储存区;进行全量同步任务,全量过程和增量过程中均设置递增序列号;增量数据捕获完成,进行数据投递,完成临时储存区的增量数据进入目标端数据库;对全量同步过程中产生的重复数据进行去重;继续进行数据捕获和数据投递,进行后续的增量同步。本发明专利技术所述的临时储存区保证全量内容先进入目标端数据库,增量内容后进入目标端数据库,防止增量内容先进入目标端数据库在空表上执行sql语句,之后全量内容进入目标端数据库,导致增量内容没生效的问题发生,保证数据有效性。性。性。

【技术实现步骤摘要】
一种基于源库不停机的异构数据库增量同步方法及系统


[0001]本专利技术属于于异构数据库数据同步领域,尤其是涉及一种基于源库不停机的异构数据库增量同步方法及系统。

技术介绍

[0002]很多应用为了确保数据的安全、准确、合规,都会选择给数据源备份一个或多个节点,提高应用和用户的体验。大部分情况我们都需要在已有的业务基础上做数据同步,全量同步就是保证数据源和不同节点初始环境相同。传统的全量同步为了保证同步的准确性,一般选择将源端数据库停机,待确保数据同步完成后,再开启源端数据库的业务数据流入。可是全量同步基本上都会面临数据多,时间长的问题,尽管我们会选择晚上和低峰时段进行全量同步,但是长时间的业务不可用也是很多应用不可接受的。
[0003]本文旨在解决全量同步时应用可以实现源库不停机,既要保证源库的可用,又要保证数据同步的一致性。我们在实现过程中主要面临两个问题。第一,由于全量同步过程中,源端业务不停,所以同时会有增量数据产生并进入目标库,在全量同步完成并将全量过程中增量同步到目标库后,会产生重复数据。第二,由于全量和增量导出后我们无法保证谁先入库,如果增量内容先入库,会在空表上执行sql语句,之后全量内容入库,导致增量内容没生效,会产生数据不一致。

技术实现思路

[0004]有鉴于此,本专利技术旨在提出一种基于源库不停机的异构数据库增量同步方法及系统,以解决数据同步源库不停机的情况下,增量数据进入数据库产生重复数据以及增量数据先进入目标端数据库而产生增量内容失效的问题。
[0005]为达到上述目的,本专利技术的技术方案是这样实现的:一方面,本申请提出一种基于源库不停机的异构数据库增量同步方法,将源端数据库内容存到目标端数据库中,具体步骤如下:S1、开启数据捕获,监控源端数据库的最新变化,捕获增量数据,并将增量数据发送到临时储存区;S2、进行全量同步任务,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;S3、全量同步完成,获得全量过程中源端数据库改变的次数,获得全量过程的递增序列号;S4、捕获增量数据完成,进行数据投递,完成临时储存区的增量数据进入目标端数据库,确保临时储存区的消息消费完毕;S5、对全量同步及增量数据进入目标端数据库后出现的重复数据进行去重;S6、继续进行数据捕获和数据投递,进行后续的增量同步。
[0006]步骤S5中,只进行全量同步时不会出现数据重复,但是在全量同步不停机、全量和增量内容均要进入目标端数据库的情况下,全量数据进入目标端数据库一次,增量数据紧接着进入目标端数据库,两次数据进入目标端数据库会造成部分数据重复。
[0007]进一步的,步骤S4中,捕获增量数据完成的判断方法如下:全量过程中设置的递增序列号在每次源端数据库改变后增加一,增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志着捕获增量数据完成。
[0008]进一步的,步骤S4中,临时储存区的消息消费完毕的判断方法如下:判断最后一条消息的偏移量maxoffset 与消费完成返回的确认消息的偏移量commitoffset是否一致,若一致时,标志临时储存区消息消费完毕。
[0009]进一步的,步骤S5中,对全量同步过程中产生的重复数据进行去重的具体步骤如下:S71、根据目标端数据库表中的数据ID分组,相同的ID分为一组;S72、根据分组后组内总条数大于1的ID找出重复数据,并将每个ID的对应的重复数据重新存入一个临时表中;S73、为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;S74、删除目标端数据库中的重复数据,并通过序列号选出重复数据中的一条插入目标端数据库中。
[0010]另一方面,本申请还提出一种基于源库不停机的异构数据库增量同步系统,包括数据捕获组件、数据投递组件、队列中间件kafka、管理组件、去重组件;所述数据捕获组件通过管理组件控制启动,所述数据捕获组件用于监控源端数据库的最新变化,捕获增量内容,并将增量内容发送到队列中间件kafka中;所述管理组件用于启动全量同步任务、设置递增序列号,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;全量同步任务完成后,所述管理组件会返回全量过程中源端数据库改变的次数,等待数据捕获组件捕获增量内容完成后,所述管理组件会返回捕获完成的信号。
[0011]所述数据投递组件通过管理组件启动,将队列中间件kafka中存入的增量内容全部存储到目标端数据库中,确保队列中间件kafka的消息消费完毕;设置去重组件对全量同步过程中产生的重复数据进行去重;去重结束后,通过管理组件启动数据捕获组件和数据投递组件,进行后续的增量同步。
[0012]进一步的,判断数据捕获组件捕获增量内容完成的方法如下:全量过程中设置递增序列号在每次源端数据库改变后增加一,同时增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志着捕获增量数据完成。
[0013]进一步的,队列中间件kafka的消息消费完毕判断方法:判断最后一条消息的偏移量maxoffset 与消费完成返回的确认消息的偏移量
commitoffset是否一致,若一致时,队列中间件kafka的消息消费完毕。
[0014]进一步的,去重组件对全量同步过程中产生的重复数据进行去重的方法如下:根据目标端数据库表中的数据ID分组,相同的ID分为一组;根据分组后组内总条数大于1的ID找出重复数据,并将每个ID的对应的重复数据重新存入一个临时表中;为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;删除目标端数据库中的重复数据,并通过序列号选出重复数据中的一条插入目标端数据库中。
[0015]进一步的,所述数据捕获组件是以操作日志的形式记录源端数据库的变化。
[0016]相对于现有技术,本专利技术所述的一种基于源库不停机的异构数据库增量同步方法及系统具有以下有益效果:(1)本专利技术所述的临时储存区保证全量内容先进入目标端数据库,增量内容后进入目标端数据库,防止增量内容先进入目标端数据库在空表上执行sql语句,之后全量内容进入目标端数据库,导致增量内容没生效的问题发生,保证数据有效性。
[0017](2)本专利技术所述的全量同步完成并将全量过程中增量同步到目标库后,可能会产生重复数据,通过相同ID识别重复数据,借助临时表去重,减少垃圾数据。
附图说明
[0018]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术实施例所述的一种基于源库不停机的异构数据库增量同步方法流程图;图2为本专利技术实施例所述的一种基于源库不停机的异构数据库增量同步系统框图;图3为本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于源库不停机的异构数据库增量同步方法,将源端数据库内容存到目标端数据库中,其特征在于:具体步骤如下:S1、开启数据捕获,监控源端数据库的最新变化,捕获增量数据,并将增量数据发送到临时储存区;S2、进行全量同步任务,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;S3、全量同步完成,获得全量过程中源端数据库改变的次数,获得全量过程的递增序列号;S4、捕获增量数据完成,进行数据投递,完成临时储存区的增量数据进入目标端数据库,确保临时储存区的消息消费完毕;S5、对全量同步及增量数据进入目标端数据库后出现的重复数据进行去重;S6、继续进行数据捕获和数据投递,进行后续的增量同步。2.根据权利要求1所述的一种基于源库不停机的异构数据库增量同步方法,其特征在于:步骤S4中,捕获增量数据完成的判断方法如下:全量过程中设置的递增序列号在每次源端数据库改变后增加一,增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志着捕获增量数据完成。3.根据权利要求1所述的一种基于源库不停机的异构数据库增量同步方法,其特征在于:步骤S4中,临时储存区的消息消费完毕的判断方法如下:判断最后一条消息的偏移量maxoffset 与消费完成返回的确认消息的偏移量commitoffset是否一致,若一致时,标志临时储存区消息消费完毕。4.根据权利要求1所述的一种基于源库不停机的异构数据库增量同步方法,其特征在于:步骤S5中,对全量同步过程中产生的重复数据进行去重的具体步骤如下:S71、根据目标端数据库表中的数据ID分组,相同的ID分为一组;S72、根据分组后组内总条数大于1的ID找出重复数据,并将每个ID对应的重复数据重新存入一个临时表中;S73、为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;S74、删除目标端数据库中的重复数据,并在每组重复数据中通过序列号选出任意一条数据插回目标数据库中。5.一种基于源库不停机的异构数据库增量同步系统,其特征在于:包括数据捕获组件、数据投递组件、队列中间件kafka、管理组件、去重组件;所述数据捕获组件通过...

【专利技术属性】
技术研发人员:赵伟朱佳伟
申请(专利权)人:天津南大通用数据技术股份有限公司
类型:发明
国别省市:

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

1