CN113656511B - 一种基于源库不停机的异构数据库增量同步方法及系统 - Google Patents

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

Info

Publication number
CN113656511B
CN113656511B CN202111218116.9A CN202111218116A CN113656511B CN 113656511 B CN113656511 B CN 113656511B CN 202111218116 A CN202111218116 A CN 202111218116A CN 113656511 B CN113656511 B CN 113656511B
Authority
CN
China
Prior art keywords
incremental
data
database
full
synchronization
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
Application number
CN202111218116.9A
Other languages
English (en)
Other versions
CN113656511A (zh
Inventor
赵伟
朱佳伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Nankai University General Data Technologies Co ltd
Original Assignee
Tianjin Nankai University General Data Technologies Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Nankai University General Data Technologies Co ltd filed Critical Tianjin Nankai University General Data Technologies Co ltd
Priority to CN202111218116.9A priority Critical patent/CN113656511B/zh
Publication of CN113656511A publication Critical patent/CN113656511A/zh
Application granted granted Critical
Publication of CN113656511B publication Critical patent/CN113656511B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种基于源库不停机的异构数据库增量同步方法及系统
技术领域
本发明属于于异构数据库数据同步领域,尤其是涉及一种基于源库不停机的异构数据库增量同步方法及系统。
背景技术
很多应用为了确保数据的安全、准确、合规,都会选择给数据源备份一个或多个节点,提高应用和用户的体验。大部分情况我们都需要在已有的业务基础上做数据同步,全量同步就是保证数据源和不同节点初始环境相同。传统的全量同步为了保证同步的准确性,一般选择将源端数据库停机,待确保数据同步完成后,再开启源端数据库的业务数据流入。可是全量同步基本上都会面临数据多,时间长的问题,尽管我们会选择晚上和低峰时段进行全量同步,但是长时间的业务不可用也是很多应用不可接受的。
本文旨在解决全量同步时应用可以实现源库不停机,既要保证源库的可用,又要保证数据同步的一致性。我们在实现过程中主要面临两个问题。第一,由于全量同步过程中,源端业务不停,所以同时会有增量数据产生并进入目标库,在全量同步完成并将全量过程中增量同步到目标库后,会产生重复数据。第二,由于全量和增量导出后我们无法保证谁先进入目标端数据库,如果增量内容先进入目标端数据库,会在空表上执行sql语句,之后全量内容进入目标端数据库,导致增量内容没生效,会产生数据不一致。
发明内容
有鉴于此,本发明旨在提出一种基于源库不停机的异构数据库增量同步方法及系统,以解决数据同步源库不停机的情况下,增量数据进入数据库产生重复数据以及增量数据先进入目标端数据库而产生增量内容失效的问题。
为达到上述目的,本发明的技术方案是这样实现的:
一方面,本申请提出一种基于源库不停机的异构数据库增量同步方法,将源端数据库内容存到目标端数据库中,具体步骤如下:
S1、开启数据捕获,监控源端数据库的最新变化,捕获增量数据,并将增量数据发送到临时储存区;
S2、进行全量同步任务,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;
S3、全量同步完成,获得全量过程中源端数据库改变的次数,获得全量过程的递增序列号;
S4、全量过程中设置的递增序列号在每次源端数据库改变后增加一,增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志着捕获增量数据完成,捕获增量数据完成,进行数据投递,完成临时储存区的增量数据进入目标端数据库,确保临时储存区的消息消费完毕;
S5、对全量同步及增量数据进入目标端数据库后出现的重复数据进行去重;
S6、继续进行数据捕获和数据投递,进行后续的增量同步。
步骤S5中,只进行全量同步时不会出现数据重复,但是在全量同步不停机、全量和增量内容均要进入目标端数据库的情况下,全量数据进入目标端数据库一次,增量数据紧接着进入目标端数据库,两次数据进入目标端数据库会造成部分数据重复。
进一步的,步骤S4中,临时储存区的消息消费完毕的判断方法如下:
判断最后一条消息的偏移量maxoffset与消费完成返回的确认消息的偏移量commitoffset是否一致,若一致时,标志临时储存区消息消费完毕。
进一步的,步骤S5中,对全量同步过程中产生的重复数据进行去重的具体步骤如下:
S71、根据目标端数据库表中的数据ID分组,相同的ID分为一组;
S72、根据分组后组内总条数大于1的ID找出重复数据,并将每个ID的对应的重复数据重新存入一个临时表中;
S73、为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;
S74、删除目标端数据库中的重复数据,并通过序列号选出重复数据中的一条插入目标端数据库中。
另一方面,本申请还提出一种基于源库不停机的异构数据库增量同步系统,包括数据捕获组件、数据投递组件、队列中间件kafka、管理组件、去重组件;
所述数据捕获组件通过管理组件控制启动,所述数据捕获组件用于监控源端数据库的最新变化,捕获增量内容,并将增量内容发送到队列中间件kafka中;
所述管理组件用于启动全量同步任务、设置递增序列号,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;
全量同步任务完成后,所述管理组件会返回全量过程中源端数据库改变的次数;
全量过程中设置递增序列号在每次源端数据库改变后增加一,同时增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志数据捕获组件捕获增量数据完成,捕获增量数据完成后,所述管理组件会返回捕获完成的信号;
所述数据投递组件通过管理组件启动,将队列中间件kafka中存入的增量内容全部存储到目标端数据库中,确保队列中间件kafka的消息消费完毕;
设置去重组件对全量同步过程中产生的重复数据进行去重;
去重结束后,通过管理组件启动数据捕获组件和数据投递组件,进行后续的增量同步。
进一步的,队列中间件kafka的消息消费完毕判断方法:
判断最后一条消息的偏移量maxoffset与消费完成返回的确认消息的偏移量commitoffset是否一致,若一致时,队列中间件kafka的消息消费完毕。
进一步的,去重组件对全量同步过程中产生的重复数据进行去重的方法如下:
根据目标端数据库表中的数据ID分组,相同的ID分为一组;
根据分组后组内总条数大于1的ID找出重复数据,并将每个ID的对应的重复数据重新存入一个临时表中;
为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;
删除目标端数据库中的重复数据,并通过序列号选出重复数据中的一条插入目标端数据库中。
进一步的,所述数据捕获组件是以操作日志的形式记录源端数据库的变化。
相对于现有技术,本发明所述的一种基于源库不停机的异构数据库增量同步方法及系统具有以下有益效果:
(1)本发明所述的临时储存区保证全量内容先进入目标端数据库,增量内容后进入目标端数据库,防止增量内容先进入目标端数据库在空表上执行sql语句,之后全量内容进入目标端数据库,导致增量内容没生效的问题发生,保证数据有效性。
(2)本发明所述的全量同步完成并将全量过程中增量同步到目标库后,可能会产生重复数据,通过相同ID识别重复数据,借助临时表去重,减少垃圾数据。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种基于源库不停机的异构数据库增量同步方法流程图;
图2为本发明实施例所述的一种基于源库不停机的异构数据库增量同步系统框图;
图3为本发明实施例所述的数据去重流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
下面将参考附图并结合实施例来详细说明本发明。
如图1所示,本申请提出一种基于源库不停机的异构数据库增量同步方法,将源端数据库内容存到目标端数据库中,具体步骤如下:
S1、开启数据捕获,监控源端数据库的最新变化,捕获增量数据,并将增量数据发送到临时储存区;
S2、进行全量同步任务,全量过程和增量过程中均设置递增序列号,全量过程中的递增序列号记录源端数据库改变次数,同时,增量过程中的递增序列号记录增量数据捕获次数;
S3、全量同步完成,获得全量过程中源端数据库改变的次数,获得全量过程的递增序列号;
S4、全量过程中设置的递增序列号在每次源端数据库改变后增加一,增量过程中设置的递增序列号记录增量数据捕获次数,当捕获次数大于改变次数时,标志着捕获增量数据完成,捕获增量数据完成,进行数据投递,完成临时储存区的增量数据进入目标端数据库,确保临时储存区的消息消费完毕;
S5、对全量同步及增量数据进入目标端数据库后出现的重复数据进行去重;
S6、继续进行数据捕获和数据投递,进行后续的增量同步。
步骤S4中,临时储存区的消息消费完毕的判断方法如下:
判断最后一条消息的偏移量maxoffset与消费完成返回的确认消息的偏移量commitoffset是否一致,若一致时,标志临时储存区消息消费完毕。
步骤S5中,对全量同步过程中产生的重复数据进行去重的具体步骤如下:
S71、根据目标端数据库表中的数据ID分组,相同的ID分为一组;
S72、根据分组后组内总条数大于1的ID找出重复数据,并将每个ID对应的重复数据重新存入一个临时表中;
S73、为临时表增加一个row_number列,所述row_number列中的序号依次递增,为重复数据增加一个序列号;
S74、删除目标端数据库中的重复数据,并在每组重复数据中通过序列号选出任意一条数据插回目标数据库中。
如图2所示,另一方面,本申请还提出一种基于源库不停机的异构数据库增量同步系统,包括数据捕获组件,数据投递组件,队列中间件kafka,管理组件、去重组件。
可以在管理组件中去启停任意组件,监控任意组件的执行结果,管理组件是所有组件的执行窗口,其他功能组件是每个具体任务的执行者。其中,数据捕获组件担任全量同步过程中捕获产生的增量内容;队列中间件kafka担任临时缓存捕获到的增量内容;数据投递组件担任同步内容的进入目标端数据库任务。通过这些组件协同完成了源库不停机的全量同步,主要流程包括如下几个步骤:
步骤1、启动管理组件;
步骤2、在管理组件中启动数据捕获组件,捕获增量内容;
步骤3、在管理组件中启动全量同步任务;
步骤4、等待管理组件返回全量同步结束的信号;
步骤5、等待管理组件返回增量捕获完成的信号;
步骤6、在管理组件中开启数据投递组件;
步骤7、启动去重组件,进行数据去重;
步骤8、开启数据捕获和投递组件,进行后续的增量同步。
步骤1、启动管理组件
管理组件是所有组件的窗口,监控其他组件,并且会给我们返回其他组件的执行结果,开启管理组件是所有操作的前提。在管理组件上,可以按照自己的启停要求去管理其他组件,并且可以获取我们需要的临界条件。
步骤2、在管理组件中启动数据捕获组件,捕获增量内容
在管理组件上启动数据捕获组件,数据捕获组件用于监控源端数据库的最新变化,记录增量内容,数据捕获组件是以操作日志的形式记录源端数据库的变化,开启数据捕获组件可以保证源端数据不停机,进行数据库增量同步。
数据捕获组件的下游组件是队列中间件kafka,把源端数据库的增量内容发到队列中间件kafka,是为了解决源库不停机全量同步过程出现的数据不一致问题。
例如,源端数据库table1表有一条数据a=1,如果业务场景会修改这条数据,将a修改成2,那么数据捕获组件会捕获到这样一条日志,sql如下:
update table1 set a=2where a=1;
其中table1是表名,a是字段名称。如果没有引入队列中间件kafka,增量内容直接进入目标端数据库,全量内容没有进入目标端数据库,则目标端数据库是空表。增量内容进入目标端数据库会执行上面的sql,没有数据只能空执行。直到全量内容进入目标端数据库时,目标端数据会有一条未被修改过的a=1的数据,而源端数据库已经被业务修改成了a=2,至此,源端数据库和目标端数据就出现了数据不一致现象。所以,我们把增量内容暂时放在队列中间件kafka中,并且关闭数据投递组件,这样队列中间件kafka中存储消息是不会被消费的。当我们收到管理组件全量同步完成的信号,再放开数据投递组件,这样就可以保证增量内容是后于全量内容进入目标端数据库的。那么,就不会出现上述增量记录的sql日志在空表执行,造成数据不一致的现象。
步骤3、在管理组件中启动全量同步任务
在管理组件中启动全量同步任务。通常,在传统技术中,启动全量同步的时候,需要关闭数据捕获组件,即让数据库处于一个静态的状态,等待全量同步完成后开启增量同步。而本申请在开启全量任务之前已经开启了数据捕获组件,就是让源端数据库处于一个源库不停机的状态。
步骤4、等待管理组件返回全量同步结束的信号
管理组件会记录全量同步的执行结果,还会记录全量过程中的增量改变次数。用一个递增的递增序列号记录改变次数,每次改变递增序列号增加一。当全量内容同步完毕,管理组件会返回全量同步完成和全量过程源端数据库修改的次数,即上面提到的递增的递增序列号。
步骤5、等待管理组件返回增量捕获完成的信号
管理组件会记录下全量过程中源端数据库的变化次数,它是用一个递增的递增序列号表示的,每次改变递增序列号增加一。之所以引入这样一个序列号,是为了解决数据重复的问题,因为开启数据投递的时机会影响后面的去重。
比如,当数据捕获组件没有完全捕获完毕,即没有把全量过程中业务产生的增量内容全部捕获到,这时候开启数据投递组件。那么后续的去重工作只会将全量内容和捕获不完全的内容重复部分消除掉,当全量同步结束后,全量过程中遗留的增量内容进入目标端数据库,那么,这部分遗留的增量内容和全量内容很有可能会有重复的部分,但是去重工作已经结束了,所以会造成去重不彻底。
为了解决去重不彻底的问题,必须确保全量过程中的增量内容全部捕获完毕,全量过程中设置递增序列号在每次源端数据库改变后增加一,同时增量过程中设置递增序列号记录增量数据捕获次数,只有当增量过程中递增序列号大于全量过程中递增序列号时,才标志着数据捕获完毕,才能开启下游的数据投递组件,从而确保不会出现去重不彻底的问题。
在管理组件中开启数据投递组件,开启的临界条件就是增量的序列号大于全量的序列号。管理组件会根据是否达到临界条件给出反馈,不需要自己去比较。
步骤6、在管理组件中开启数据投递组件
在管理组件中开启数据投递组件,这一步骤主要是消费队列中间件kafka里的消息,完成增量内容进入目标端数据库。这一步要求确保消息消费完毕,不造成数据丢失。通过比对maxoffset与commitoffset值是否一致,判断是否全部消费完成。maxoffset代表最后条消息的偏移量,commitoffset表示消费完成返回的确认消息的偏移量。当两者一致时,标志消息消费完毕。
如图3所示,步骤7、启动去重组件,进行数据去重
在管理组件中开启去重组件,数据去重是为了解决源库不停机的全量过程中产生的重复数据,解决的具体思路,用下面一个实例说明。
假如全量同步过程完成,同步到目标端数据库表结构和数据如下,查询出t1表的全部数据,可以看出有两条重复数据。
gbase>select*from t1;
Figure GDA0003417890810000111
此时,需要找出t1表的重复数据,然后将重复数据存到一个临时表中,并且为临时表增加一个row_number列,就是一个递增序号,通过下面的sql语句完成上面的过程。
create table t1_tmp as select row_number()over(partition by id orderby id)as PK,t.*from t1 t where t.id in(select id from t1 group by id havingcount(1)>1);
其中t1_tmp是临时表名,PK是递增序号的别名,t是t1表的别名,t.*表示t1表的所有字段。我们判重的条件是数据id重复,select id from t1 group by id having count(1)>1表示根据id分组,相同id的分为一组,找出分组后组内总条数大于1的分组id。找出重复数据后,存入临时表,查询出临时表的内容。
gbase>select*from t1_tmp;
Figure GDA0003417890810000121
可以看出,临时表保存着目标端t1表的两条重复数据,并且给每条数据加了一个序列号PK。
删除目标端t1表的重复数据,通过下面的sql语句实现。
delete t1 t where t.id in(select id from t1 group by id having count(1)>1);
其中判重条件和上述临时表找出重复数据的条件一致。删除重复数据后,再查询一下t1的全部内容。
gbase>select*from t1;
Figure GDA0003417890810000131
可以看出,t1表的重复数据确实已经被删除,但是此时就相当于少了这条重复数据,必须把重复数据去重后插入回去,通过如下的sql实现。
insert into t1 select id,n1,n2 from t1_tmp where PK=2;
选择将PK=2的数据插入回去,理论上重复数据只会出现两条一样,不会出现三条甚至更多,因为产生重复只会是增量内容和全量内容的重复,即两者出现相同部分。所以,只需要选出一条插入回去即可,这里实例选择的是PK=2,也可以选择PK=1。去重流程完毕后,最后查看一下t1表的内容。
gbase>select*from t1;
Figure GDA0003417890810000132
以上实例就是去重的全部过程和思路。主要内容找出重复数据后将重复数据缓存在临时表,然后删除原表的重复数据,最后将去重后的重复数据新增回原表。
步骤8、开启数据捕获和投递组件,进行后续的增量同步
上述步骤完成后,其实已经实现了源库不停机的全量同步。这里,同时开启数据捕获和投递组件,是为了后续的增量同步。因为已经完成了全量同步,后续源端的业务是通过增量同步完成的数据同步。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111218116.9A CN113656511B (zh) 2021-10-20 2021-10-20 一种基于源库不停机的异构数据库增量同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111218116.9A CN113656511B (zh) 2021-10-20 2021-10-20 一种基于源库不停机的异构数据库增量同步方法及系统

Publications (2)

Publication Number Publication Date
CN113656511A CN113656511A (zh) 2021-11-16
CN113656511B true CN113656511B (zh) 2022-02-18

Family

ID=78484271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111218116.9A Active CN113656511B (zh) 2021-10-20 2021-10-20 一种基于源库不停机的异构数据库增量同步方法及系统

Country Status (1)

Country Link
CN (1) CN113656511B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115037729B (zh) * 2022-04-21 2024-05-28 中国建设银行股份有限公司 数据汇聚方法、装置、电子设备及计算机可读介质
CN114647716B (zh) * 2022-05-13 2022-08-30 天津南大通用数据技术股份有限公司 一种适用于泛化数据仓库的系统
CN116756162B (zh) * 2023-06-28 2024-03-12 蝉鸣科技(西安)有限公司 一种保证数据一致性的方法和系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657002A (zh) * 2017-09-20 2018-02-02 北京九桥同步软件有限公司 文件同步方法及装置
CN108769212A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 数据同步方法、装置、计算机设备和存储介质
CN109960710A (zh) * 2019-01-16 2019-07-02 平安科技(深圳)有限公司 数据库之间的数据同步方法和系统
CN110543472A (zh) * 2019-08-09 2019-12-06 浙江大华技术股份有限公司 数据对账方法及相关装置
CN111723160A (zh) * 2020-08-24 2020-09-29 国网浙江省电力有限公司 一种多源异构增量数据同步方法及系统
CN113051347A (zh) * 2021-03-25 2021-06-29 未鲲(上海)科技服务有限公司 异构数据库之间数据同步方法、系统、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105005618A (zh) * 2015-07-21 2015-10-28 杭州合众数据技术有限公司 一种异构数据库之间的数据同步方法及系统
CN111026808A (zh) * 2019-12-02 2020-04-17 上海浪擎信息科技有限公司 一种基于国产环境下的异构数据库同步系统及同步方法
CN111752910A (zh) * 2020-06-24 2020-10-09 上海微盟企业发展有限公司 一种异构平台的数据同步方法、系统和相关装置
CN112988916B (zh) * 2021-03-05 2023-06-16 杭州天阙科技有限公司 针对Clickhouse的全量和增量同步方法、设备和存储介质
CN113206757B (zh) * 2021-04-25 2022-04-19 烽火通信科技股份有限公司 流式同步网管配置全量数据和增量数据的方法及电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657002A (zh) * 2017-09-20 2018-02-02 北京九桥同步软件有限公司 文件同步方法及装置
CN108769212A (zh) * 2018-05-31 2018-11-06 康键信息技术(深圳)有限公司 数据同步方法、装置、计算机设备和存储介质
CN109960710A (zh) * 2019-01-16 2019-07-02 平安科技(深圳)有限公司 数据库之间的数据同步方法和系统
CN110543472A (zh) * 2019-08-09 2019-12-06 浙江大华技术股份有限公司 数据对账方法及相关装置
CN111723160A (zh) * 2020-08-24 2020-09-29 国网浙江省电力有限公司 一种多源异构增量数据同步方法及系统
CN113051347A (zh) * 2021-03-25 2021-06-29 未鲲(上海)科技服务有限公司 异构数据库之间数据同步方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN113656511A (zh) 2021-11-16

Similar Documents

Publication Publication Date Title
CN113656511B (zh) 一种基于源库不停机的异构数据库增量同步方法及系统
US9652519B2 (en) Replicating data across multiple copies of a table in a database system
US8688634B2 (en) Asynchronous peer-to-peer data replication
US7792790B2 (en) System and method of synchronizing data between a server and a client
US8086661B2 (en) Method for resolving collisions in a database replication system by relaxing a constraint that contributes to collisions, or removing the cause of the constraint that contributes to the collisions
CN110990432B (zh) 一种跨机房同步分布式缓存集群的装置和方法
US20060129618A1 (en) Method and a computer system for synchronising backups of objects and of meta data about the objects
CN110765204B (zh) 一种对增量同步异常中断情况的处理方法和装置
US20170031948A1 (en) File synchronization method, server, and terminal
KR102038529B1 (ko) 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
CN112367149B (zh) 消息获取方法、装置、设备及存储介质
CN111858501B (zh) 一种基于日志解析同步的日志读取方法和数据同步系统
CN109271444A (zh) 一种基于触发器的表级双向同步实现方法和系统
CN113438275B (zh) 数据迁移方法、装置、存储介质及数据迁移设备
CN107040576A (zh) 信息推送方法及装置、通讯系统
CN115687402A (zh) 一种实现缓存数据和数据库数据一致的方法
CN112650629A (zh) 区块链索引数据恢复方法、装置、设备和计算机存储介质
CN110457284B (zh) 基于SQLServer数据库的多时间点数据恢复方法及系统
CN112162698B (zh) 一种缓存分区重建方法、装置、设备及可读存储介质
CN106354830A (zh) 一种数据库集群节点间数据同步的方法及装置
CN113190281A (zh) 一种基于rowid区间的初始化装载方法与装置
CN114756628B (zh) 一种高复用可扩展的数据及文件同步的方法
CN110008200B (zh) 一种数据库的数据迁移方法、装置及设备
CN118445364B (zh) 分布式资源同步方法、系统和设备
CN117827972A (zh) 数据同步方法、装置、设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant