CN117708148A - 一种数据同步方法、数据同步装置及存储介质 - Google Patents
一种数据同步方法、数据同步装置及存储介质 Download PDFInfo
- Publication number
- CN117708148A CN117708148A CN202311655569.7A CN202311655569A CN117708148A CN 117708148 A CN117708148 A CN 117708148A CN 202311655569 A CN202311655569 A CN 202311655569A CN 117708148 A CN117708148 A CN 117708148A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- party database
- log
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 230000008859 change Effects 0.000 claims abstract description 120
- 230000001360 synchronised effect Effects 0.000 claims abstract description 41
- 238000012217 deletion Methods 0.000 claims description 81
- 230000037430 deletion Effects 0.000 claims description 81
- 238000003780 insertion Methods 0.000 claims description 39
- 230000037431 insertion Effects 0.000 claims description 39
- 238000006073 displacement reaction Methods 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 20
- 230000008439 repair process Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 5
- 230000002085 persistent effect Effects 0.000 claims description 3
- 230000006403 short-term memory Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 7
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据同步方法、数据同步装置及存储介质,用于数据同步技术领域。该方法包括:获取源数据库的数据变更日志;对同步到第三方数据库的数据进行一致性修复,以使在第三方数据库中删除源数据库中所有发生变更的数据;基于数据变更日志,对第三方数据库中修复后的数据进行增量同步,以使增量同步后第三方数据库中包含源数据库中所有变更后的数据;通过对同步到第三方数据库的数据进行一致性修复,在第三方数据库中删除源数据库中所有发生变更的数据,再通过增量同步,即可实现源数据库与第三方数据库的数据一致性,无需在全量同步时对源数据库进行加锁,确保了源数据库的正常运行。
Description
技术领域
本申请实施例涉及数据同步技术领域,尤其涉及一种数据同步方法、数据同步装置及存储介质。
背景技术
CDC(Change Data Capture,数据变更捕获)是捕获数据库中变更数据的一种手段,常用于异构数据同步,将源数据库的数据同步到第三方数据库。目前CDC技术主要应用在MySQL,Oracle,Postgre,SqlServer等关系型数据库。
现有的CDC同步方案包括全量同步(即将源数据库的全部数据同步到第三方数据库)和增量同步(即将源数据库中变更数据同步到第三方数据库),以实现源数据库与第三方数据库的数据一致性。在全量同步过程中,需要对源数据库进行加锁,加锁后的源数据库内的数据不会发生变更,在全量同步完成后再对源数据库进行解锁,进行增量同步。
然而,在全量同步过程中对源数据库进行加锁,会阻塞对源数据库的插入数据或更新数据等数据变更操作,对源数据库的运行产生不利影响。
发明内容
本申请实施例提供了一种数据同步方法、数据同步装置及存储介质,无需在全量同步时对源数据库进行加锁,确保了源数据库的正常运行。
本申请实施例提供了一种数据同步方法,包括:
将源数据库的数据全量同步到第三方数据库,并获取所述数据全量同步期间所述源数据库发生的数据变更操作;
对同步到所述第三方数据库的数据进行一致性修复,以在所述第三方数据库中删除所有发生所述数据变更操作的数据,得到修复后的第三方数据库;
对所述修复后的第三方数据库进行增量同步,以在所述修复后的第三方数据库中增加所有所述数据变更操作在所述源数据库中增加的数据,得到目标第三方数据库。
进一步的,所述获取将所述源数据库的数据全量同步到所述第三方数据库的期间,所述源数据库的数据发生的数据变更操作,包括:
确定开始所述源数据的全量同步时,所述源数据库中数据变更日志的第一日志位移;
确定完成所述源数据的全量同步时,所述源数据库中数据变更日志的第二日志位移;
在所述第一日志位移至所述第二日志位移之间的存储地址,获取数据变更日志;其中所述数据变更日志用于记录所述源数据库的数据全量同步到第三方数据库的期间,所述源数据库发生的数据变更操作;
在所述数据变更日志中获取所述数据变更操作。
进一步的,所述数据变更操作包括:插入目标数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述目标数据的数据删除日志;
将所述目标数据的数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述数据删除日志,以删除所述第三方数据库中的所述目标数据。
进一步的,所述对所述修复后的第三方数据库进行增量同步,包括:
获得插入所述目标数据的数据插入日志;
将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述目标数据。
进一步的,所述数据变更操作包括:删除目标数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述目标数据的第一数据删除日志;
将所述第一数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第一数据删除日志,以删除所述第三方数据库中的所述目标数据。
进一步的,所述数据变更操作包括:删除更新前数据以及插入更新后数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述更新前数据的第二数据删除日志;
将所述第二数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第二数据删除日志,以删除所述第三方数据库中的所述更新前数据;
获得删除所述更新后数据的第三数据删除日志;
将所述第三数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第三数据删除日志,以删除所述第三方数据库中的所述更新后数据。
进一步的,所述对所述修复后的第三方数据库进行增量同步,包括:
获得插入所述更新后数据的数据插入日志;
将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述更新后数据。
本申请实施例还提供了一种数据同步装置,包括:
获取单元,用于将源数据库的数据全量同步到第三方数据库,并获取所述数据全量同步期间所述源数据库发生的数据变更操作;
修复单元,用于对同步到所述第三方数据库的数据进行一致性修复,以在所述第三方数据库中删除所有发生所述数据变更操作的数据,得到修复后的第三方数据库;
同步单元,用于对所述修复后的第三方数据库进行增量同步,以在所述修复后的第三方数据库中增加所有所述数据变更操作在所述源数据库中增加的数据,得到目标第三方数据库。
本申请实施例还提供了一种数据同步装置,包括:
中央处理器,存储器,输入输出接口,有线或无线网络接口,电源;
所述存储器为短暂存储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,在控制面功能实体上执行所述存储器中的指令操作以执行上述的数据同步方法。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如上所述的数据同步方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,获取源数据库的数据变更日志,其中数据变更日志用于记录源数据库的数据全量同步到第三方数据库的期间,源数据库发生的数据变更操作;对同步到第三方数据库的数据进行一致性修复,以使在第三方数据库中删除源数据库中所有发生变更的数据;基于数据变更日志,对第三方数据库中修复后的数据进行增量同步,以使增量同步后第三方数据库中包含源数据库中所有变更后的数据;通过对同步到第三方数据库的数据进行一致性修复,在第三方数据库中删除源数据库中所有发生变更的数据,再通过增量同步使第三方数据库中包含源数据库中所有变更后的数据,即可实现源数据库与第三方数据库的数据一致性,无需在全量同步时对源数据库进行加锁,确保了源数据库的正常运行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一个数据同步流程图;
图2为本申请实施例公开的在源数据库插入数据时的数据同步流程图;
图3为本申请实施例公开的在源数据库删除数据时的数据同步流程图;
图4为本申请实施例公开的在源数据库插入更新后数据时的数据同步流程图;
图5为本申请实施例公开的在源数据库删除更新前数据时的数据同步流程图;
图6为本申请实施例公开的另一数据同步流程图;
图7为本申请实施例公开的一个数据同步装置图;
图8为本申请实施例公开的另一数据同步装置图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一个具体实施方式”或“一个实施例”等类似表达,其描述了所有可能实施例的子集,但是可以理解,“一个具体实施方式”或“一个实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。在以下的描述中,涉及到的术语多个是指至少两个。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
现有的CDC同步方案包括全量同步(即将源数据库的全部数据同步到第三方数据库)和增量同步(即将源数据库中变更数据同步到第三方数据库),以实现源数据库与第三方数据库的数据一致性。在全量同步过程中,需要对源数据库进行加锁,加锁后的源数据库内的数据不会发生变更,在全量同步完成后再对源数据库进行解锁,进行增量同步。然而,在全量同步过程中对源数据库进行加锁,会阻塞对源数据库的插入数据或更新数据等数据变更操作,对源数据库的运行产生不利影响。因此,本申请实施例提供了一种数据同步方法,无需在全量同步时对源数据库进行加锁,确保了源数据库的正常运行,如图1所示,具体包括步骤101至103:
101、获取源数据库的数据变更日志。
本申请实施例中,数据同步装置可以获取源数据库的数据变更日志,其中,数据变更日志用于记录源数据库的数据全量同步到第三方数据库的期间,源数据库发生的数据变更操作。即获取在对源数据库的数据全量同步到第三方数据库的期间,源数据库中产生的数据变更日志。源数据库可以为MySQL数据库或Oracle数据库,具体此处不做限定;第三方数据库可以理解为源数据库的下游数据库(下游系统),第三方数据库可以为ES数据库或Iceberg数据库,具体此处不做限定。可以理解的是,在开始全量同步时,第三方数据库中可以不包含数据,或已带有数据,具体此处不做限定。
源数据库中一般包含较多的数据,数据以数据表的形式存储于源数据库中,在全量同步时,可以使用并发读取数据表的方式,将源数据库中的数据逐一同步到第三方数据库,提升读取效率。在全量同步期间,源数据库中的数据可能会发生数据变更,如删除数据,更新数据等;这些数据变更操作会生成对应的数据变更日志保存在源数据库的日志文件中,在数据变更日志中记录有数据的数据标识以及该数据的数据变更操作。可以从日志文件中获取在全量同步期间,源数据库中产生的数据变更日志。
102、对同步到第三方数据库的数据进行一致性修复。
在全量同步完成后,可以对同步到第三方数据库的数据进行一致性修复,以使在第三方数据库中删除源数据库中所有发生变更的数据,即在同步到第三方数据库的数据中,仅保留在全量同步期间源数据库中未发生变更的数据。可以理解的是,全量同步期间,源数据库中的数据可能会出现多种数据变更操作,在全量同步完成后,变更后的数据可能已经同步到第三方数据库或未同步到第三方数据库,此时,第三方数据库中的数据与源数据库中的数据未能保存一致。即在全量同步期间会出现数据一致性问题。
其中,数据标识可以为数据ID,如源数据库中包含ID为1至10的数据,在全量同步到ID为3的数据时,若在源数据库中删除ID为1的数据,或更新ID为1的数据,则全量同步完成后,第三方数据库中ID为1的数据与源数据库中的不相同,此时,需要进行一致性修复,使数据保存一致。如在第三方数据中删除ID为1的数据,或删除ID为1的更新前数据,即在第三方数据库中删除源数据库中所有发生变更的数据。可以理解的是,在进行一致性修复后,源数据库中会有一些数据在第三方数据库中不存在,如源数据库中更新ID为1的数据时,在一致性修复时删除ID为1的更新前数据,此时,源数据库中会比第三方数据库中多出ID为1的更新后数据。
103、基于数据变更日志,对第三方数据库中修复后的数据进行增量同步。
在一致性修复完成后,可以基于全量同步期间源数据库产生的数据变更日志,对第三方数据库中修复后的数据进行增量同步。具体的,可以将在全量同步期间所有的数据变更日志发送至第三方数据库,还可以将源数据库中比第三方数据库多出的数据对应的数据变更日志发送至第三方数据库,当第三方数据库接收到数据变更日志后,会执行数据变更日志,以使增量同步后第三方数据库中包含源数据库中所有变更后的数据。如当源数据库中会比第三方数据库中多出ID为1的更新后数据时,可以将所有的数据变更日志发送至第三方数据库,也可以仅将插入ID为1的更新后数据对应的数据变更日志发送至第三方数据库,具体此处不做限定。
可见,本申请实施例中,获取源数据库的数据变更日志,其中数据变更日志用于记录源数据库的数据全量同步到第三方数据库的期间,源数据库发生的数据变更操作;对同步到第三方数据库的数据进行一致性修复,以使在第三方数据库中删除源数据库中所有发生变更的数据;基于数据变更日志,对第三方数据库中修复后的数据进行增量同步,以使增量同步后第三方数据库中包含源数据库中所有变更后的数据;通过对同步到第三方数据库的数据进行一致性修复,在第三方数据库中删除源数据库中所有发生变更的数据,再通过增量同步使第三方数据库中包含源数据库中所有变更后的数据,即可实现源数据库与第三方数据库的数据一致性,无需在全量同步时对源数据库进行加锁,确保了源数据库的正常运行。
可以理解的是,对源数据库加锁时需要数据库账号具备较大的操作权限,加锁时容易导致操作权限泄露,影响源数据库的安全性,而本申请实施例中无需对源数据库进行加锁,有效提高了源数据库的安全性;且不会阻塞源数据库的生产业务过程中对数据进行数据变更操作,对源数据库的生产业务无影响。而对于现有的CDC无锁同步方案中,需要在内存对数据进行合并修复数据一致性,这个操作需要较大的内存资源。而本申请实施例中无需对数据进行合并,有效减少内存资源。
进一步的,在将源数据库的数据全量同步到第三方数据库期间,源数据库中会出现插入数据的操作,需要对插入的数据进行同步,如图2所示,具体包括步骤201至步骤204:
201、基于源数据库中数据变更日志的日志位移,获取源数据库中产生的数据变更日志。
本申请实施例中,可以基于全量同步期间,源数据库中数据变更日志的日志位移,获取源数据库中产生的数据变更日志,该日志位移可以理解为源数据库中数据变更日志的日志存储地址。具体的,如图6所示,可以确定开始源数据的全量同步时,源数据库中数据变更日志的第一日志位移;即可以记录全量同步阶段读取数据开始时,源数据库中数据变更日志的日志最大位移,offset_t0;确定完成源数据的全量同步时,源数据库中数据变更日志的第二日志位移;即可以记录全量同步阶段读取完所有数据之后,源数据库中数据变更日志的日志最大位移,offset_t1;将第一日志位移至第二日志位移期间的数据变更日志,作为在对源数据库的数据全量同步到第三方数据库的期间,源数据库中产生的数据变更日志。即可以读取[offset_t0,offset_t1]范围内的日志作为该数据变更日志。
在一种可实施的方式中,可以通过Flink引擎的状态快照保存日志位移信息,结合Flink引擎对日志位移信息的精准一次语义支持,保证全量同步任务支持断点续传的能力。
202、生成删除目标数据的数据删除日志。
可以理解的是,在全量同步期间,源数据库中插入目标数据时,对应的数据变更日志的数据变更类型为数据插入日志,INSERT日志,即对应的数据变更日志为插入目标数据的数据插入日志。在全量同步期间,在源数据库中插入了N条数据,全量同步时可能读取到了[0-N]条插入的数据,也难以明确哪些是已经同步到第三方数据库的,若不进行一致修复,在增量同步时可能会出现数据重复。
如源数据库中包含ID为1至10的数据,在全量同步到ID为3的数据时,在源数据库中插入ID为0的数据以及ID为11的数据,在全量同步完成后,ID为11的数据同步到了第三方数据库中,但ID为0的数据未同步到第三方数据库中。若不进行一致性修复而直接进行增量同步,在增量同步时会把插入ID为0的数据的数据变更日志以及插入ID为11的数据的数据变更日志发送至第三方数据库,第三方数据库执行完后,会插入ID为0的数据以及ID为11的数据,会导致第三方数据库中多插入了ID为11的数据。
在一致性修复中,可以生成删除目标数据的数据删除日志,具体的,可以在插入目标数据的数据插入日志的前面,增加一条只包含主键字段的删除类型(DELETE类型)数据,即可生成删除目标数据的数据删除日志。即可以生成ID为0的数据以及ID为11的数据对应的数据删除日志,该数据删除日志可以理解为数据删除指令,即删除ID为0的数据以及ID为11的数据的指令。
203、将目标数据的数据删除日志发送至第三方数据库。
得到目标数据的数据删除日志后,可以将目标数据的数据删除日志发送至第三方数据库。第三方数据库接收到该数据删除日志后,可以执行该数据删除日志,删除第三方数据库中的目标数据,该目标数据为可能存在于第三方数据库中的数据。如可以将ID为0的数据以及ID为11的数据对应的数据删除日志发送至第三方数据库中,此时,第三方数据库中不存在ID为0的数据,则执行ID为0的数据对应的数据删除日志时,不会删除数据;第三方数据库中存在ID为11的数据,执行ID为11的数据对应的数据删除日志时,会删除ID为11的数据。删除第三方数据库中可能存在的目标数据后,可以避免在增量同步时插入重复的数据。
204、将插入目标数据的数据插入日志发送至修复后的第三方数据库。
删除第三方数据库中的目标数据后,进行增量同步,即将插入目标数据的数据插入日志发送至修复后的第三方数据库,第三方数据库执行数据插入日志,以在第三方数据库中插入目标数据。在增量同步时,可以从数据变更日志中获取插入目标数据的数据插入日志,将该数据插入日志发送至第三方数据库,或者,将所有的数据变更日志发送至第三方书数据库,具体此次不做限定。
在增量同步时,可以从offset_t1的下一个位移开始持续监听源数据库中的数据变更日志,解析数据变更日志并同步到第三方数据库。即在增量同步时会把插入ID为0的数据的数据变更日志以及插入ID为11的数据的数据变更日志发送至第三方数据库,第三方数据库执行完后,会插入ID为0的数据以及ID为11的数据,以使第三方数据库中包含源数据库中所有插入的数据。
进一步的,在将源数据库的数据全量同步到第三方数据库期间,源数据库中会出现删除数据的操作,需要对删除的数据进行同步,如图3所示,具体包括步骤301至步骤302:
301、基于源数据库中数据变更日志的日志位移,获取源数据库中产生的数据变更日志。
可以理解的是,步骤301与上述步骤201类似,具体此处不再赘述。
302、将删除目标数据的数据删除日志发送至第三方数据库。
可以理解的是,在全量同步期间,源数据库中删除目标数据时,对应的数据变更日志中记录的数据变更类型为数据删除日志,DELETE日志,即对应的数据变更日志为删除目标数据的数据删除日志。
在全量同步期间,难以确定第三方数据库中的数据是否已经在源数据库中被删除。如源数据库中包含ID为1至10的数据,在全量同步到ID为3的数据时,在源数据库中删除ID为1的数据以及ID为10的数据,全量同步完成后,第三方数据库中会存在ID为1的数据,且不存在ID为10的数据,即比源数据库多出了ID为1的数据。
在一致性修复阶段,可以将删除目标数据的数据删除日志发送至第三方数据库,以使第三方数据库执行数据删除日志,以删除第三方数据库中的目标数据,该目标数据为第三方数据库中可能存在的目标数据。即将删除ID为1的数据的数据删除日志,以及删除ID为10的数据的数据删除日志发送至第三方数据库,第三方数据库中不存在ID为10的数据,因此,仅在第三方数据库中删除ID为1的数据。即在第三方数据库中不包含源数据库中被删除的数据。
可以理解的,在一致性修复完成后,在增量同步阶段,也可以再将删除目标数据的数据删除日志发送至第三方数据库,此时,第三方数据库中不存在目标数据,即第三方数据库中不会删除数据。
进一步的,在将源数据库的数据全量同步到第三方数据库期间,源数据库中会出现更新数据的操作,在更新数据时会删除更新前数据,以及插入更新后数据;其中,需要对插入的更新后数据进行同步,如图4所示,具体包括步骤401至步骤404:
401、基于源数据库中数据变更日志的日志位移,获取源数据库中产生的数据变更日志。
可以理解的是,步骤401与上述步骤201类似,具体此处不再赘述。
402、生成删除更新后数据的数据删除日志。
可以理解的是,在全量同步期间,源数据库中插入更新后数据时,对应的数据变更日志的数据变更类型为:插入更新后数据的日志,UPDATE_AFTER日志,即对应的数据变更日志为插入更新后数据的数据插入日志。在全量同步期间,可能会对源数据库中的多条数据进行更新,难以确认同步到第三方数据库的数据是更新前数据还是更新后数据;对于更新后数据,若不进行一致修复,在增量同步时可能会出现数据重复。
如源数据库中包含ID为1至10的数据,在全量同步到ID为3的数据时,在源数据库中将更新前数据{ID=1,name=张三}更新为更新后数据{ID=1,name=李四},将更新前数据{ID=9,name=王五}更新为更新后数据{ID=9,name=赵六};在全量同步完成后,源数据库中的数据为{ID=1,name=李四},{ID=9,name=赵六};第三方数据库中的数据为{ID=1,name=张三},{ID=9,name=赵六},可见,源数据库中存在{ID=9,name=赵六}的数据,若不进行一致性修复而直接进行增量同步,在增量同步时会把{ID=1,name=李四}的数据插入日志以及{ID=9,name=赵六}的数据插入日志发送至第三方数据库,第三方数据库执行完后,会插入{ID=1,name=李四}以及{ID=9,name=赵六}的数据,会导致第三方数据库中多插入了{ID=9,name=赵六}的数据。
在一致性修复中,可以生成删除更新后数据的数据删除日志,具体的,可以将插入更新后数据的数据插入日志,转换为只包含主键字段的删除类型(DELETE类型)数据,即可生成删除更新后数据的数据删除日志。即可以生成{ID=1,name=李四}以及{ID=9,name=赵六}的数据对应的数据删除日志,该数据删除日志可以理解为数据删除指令,即删除ID{ID=1,name=李四}以及{ID=9,name=赵六}的指令。
403、将更新后数据的数据删除日志发送至第三方数据库。
得到更新后数据的数据删除日志后,可以将更新后数据的数据删除日志发送至第三方数据库。第三方数据库接收到该数据删除日志后,可以执行该数据删除日志,删除第三方数据库中的更新后数据,该更新后数据为可能存在于第三方数据库中的数据。如可以将{ID=1,name=李四}以及{ID=9,name=赵六}的数据对应的数据删除日志发送至第三方数据库中,此时,第三方数据库中不存在{ID=1,name=李四}的数据,则执行{ID=1,name=李四}的数据对应的数据删除日志时,不会删除数据;第三方数据库中存在{ID=9,name=赵六}的数据,执行{ID=9,name=赵六}的数据对应的数据删除日志时,会删除{ID=9,name=赵六}的数据。删除第三方数据库中可能存在的更新后数据后,可以避免在增量同步时插入重复的更新后数据。
404、将插入更新后数据的数据插入日志发送至修复后的第三方数据库。
删除第三方数据库中的更新后数据后,进行增量同步,即可以将插入更新后数据的数据插入日志发送至修复后的第三方数据库,第三方数据库执行数据插入日志,以在第三方数据库中插入更新后数据。即在增量同步时会把插入{ID=1,name=李四}以及{ID=9,name=赵六}的数据变更日志发送至第三方数据库,第三方数据库执行完后,会插入{ID=1,name=李四}以及{ID=9,name=赵六}的数据,以使第三方数据库中包含源数据库中所有的更新后数据。
可以理解的是,在增量同步时,可以从数据变更日志中获取插入更新后数据的数据插入日志,将该数据插入日志发送至第三方数据库,或者,将所有的数据变更日志发送至第三方书数据库,具体此次不做限定。
进一步的,还需要对删除的更新前数据进行同步,如图5所示,具体包括步骤501至步骤502:
501、基于源数据库中数据变更日志的日志位移,获取源数据库中产生的数据变更日志。
可以理解的是,步骤501与上述步骤201类似,具体此处不再赘述。
502、将删除更新前数据的数据删除日志发送至第三方数据库。
可以理解的是,在全量同步期间,源数据库中删除更新前数据时,对应的数据变更日志的数据变更类型为:删除更新前数据的删除日志,UPDATE_BEFORE日志,即对应的数据变更日志为删除更新前数据的数据删除日志。
在一致性修复阶段,可以将删除更新前数据的数据删除日志发送至第三方数据库,以使第三方数据库执行数据删除日志,以删除第三方数据库中的更新前数据,该目标数据为第三方数据库中可能存在的更新前数据。如上述中,将更新前数据{ID=1,name=张三}更新为更新后数据{ID=1,name=李四},将更新前数据{ID=9,name=王五}更新后数据{ID=9,name=赵六},则第三方数据库中存在更新前数据{ID=1,name=张三}而不存在更新前数据{ID=9,name=王五},因此,仅在第三方数据库中删除更新前数据{ID=1,name=张三}。即在第三方数据库中不包含源数据库中被删除的更新前数据。
可以理解的,在一致性修复完成后,在增量同步阶段,也可以再将删除更新前数据的数据删除日志发送至第三方数据库,此时,第三方数据库中不存在更新前数据,即第三方数据库中不会删除数据。
在一种可实施的方式中,在进行一致性修复阶段,可以判断数据变更类型,基于类型生成对应的数据变更日志,再将数据变更日志发送(写入)至第三方数据库,以进行一致性修复,再通过增量同步将全量同步期间所有的数据变更日志写入第三方数据库,确保源数据库与第三方数据库的数据一致性。
本申请实施例还提供了一种数据同步装置,如图7所示,包括:
获取单元701,用于将源数据库的数据全量同步到第三方数据库,并获取所述数据全量同步期间所述源数据库发生的数据变更操作;
修复单元702,用于对同步到所述第三方数据库的数据进行一致性修复,以在所述第三方数据库中删除所有发生所述数据变更操作的数据,得到修复后的第三方数据库;
同步单元703,用于对所述修复后的第三方数据库进行增量同步,以在所述修复后的第三方数据库中增加所有所述数据变更操作在所述源数据库中增加的数据,得到目标第三方数据库。
所述获取单元701具体用于,确定开始所述源数据的全量同步时,所述源数据库中数据变更日志的第一日志位移;确定完成所述源数据的全量同步时,所述源数据库中数据变更日志的第二日志位移;在所述第一日志位移至所述第二日志位移之间的存储地址,获取数据变更日志;其中所述数据变更日志用于记录所述源数据库的数据全量同步到第三方数据库的期间,所述源数据库发生的数据变更操作;在所述数据变更日志中获取所述数据变更操作。
所述数据变更操作包括:插入目标数据;所述修复单元702具体用于,获得删除所述目标数据的数据删除日志;将所述目标数据的数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述数据删除日志,以删除所述第三方数据库中的所述目标数据。
所述同步单元703具体用于,获得插入所述目标数据的数据插入日志;将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述目标数据。
所述数据变更操作包括:删除目标数据;所述修复单元702具体用于,获得删除所述目标数据的第一数据删除日志;将所述第一数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第一数据删除日志,以删除所述第三方数据库中的所述目标数据。
所述数据变更操作包括:删除更新前数据以及插入更新后数据;所述修复单元702具体用于,获得删除所述更新前数据的第二数据删除日志;将所述第二数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第二数据删除日志,以删除所述第三方数据库中的所述更新前数据;获得删除所述更新后数据的第三数据删除日志;将所述第三数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第三数据删除日志,以删除所述第三方数据库中的所述更新后数据。
所述同步单元703具体用于,获得插入所述更新后数据的数据插入日志;将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述更新后数据。
本申请实施例还提供了一种数据同步装置800,请参阅图8,本申请实施例的数据同步装置800可以包括一个或一个以上中央处理器CPU(CPU,central processing units)801和存储802,该存储器802中存储有一个或一个以上的应用程序或数据。
其中,存储器802可以是易失性存储或持久存储。存储在存储器802的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器801可以设置为与存储器802通信,在数据同步装置800上执行存储器802中的一系列指令操作。
数据同步装置800还可以包括一个或一个以上电源805,一个或一个以上有线或无线网络接口804,一个或一个以上输入输出接口803,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该中央处理器801可以执行前述第一方面或第一方面的任一具体方法实施例所执行的操作,具体不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
将源数据库的数据全量同步到第三方数据库,并获取所述数据全量同步期间所述源数据库发生的数据变更操作;
对同步到所述第三方数据库的数据进行一致性修复,以在所述第三方数据库中删除所有发生所述数据变更操作的数据,得到修复后的第三方数据库;
对所述修复后的第三方数据库进行增量同步,以在所述修复后的第三方数据库中增加所有所述数据变更操作在所述源数据库中增加的数据,得到目标第三方数据库。
2.根据权利要求1所述的数据同步方法,其特征在于,所述获取将所述源数据库的数据全量同步到所述第三方数据库的期间,所述源数据库的数据发生的数据变更操作,包括:
确定开始所述源数据的全量同步时,所述源数据库中数据变更日志的第一日志位移;
确定完成所述源数据的全量同步时,所述源数据库中数据变更日志的第二日志位移;
在所述第一日志位移至所述第二日志位移之间的存储地址,获取数据变更日志;其中所述数据变更日志用于记录所述源数据库的数据全量同步到第三方数据库的期间,所述源数据库发生的数据变更操作;
在所述数据变更日志中获取所述数据变更操作。
3.根据权利要求1所述的数据同步方法,其特征在于,所述数据变更操作包括:插入目标数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述目标数据的数据删除日志;
将所述目标数据的数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述数据删除日志,以删除所述第三方数据库中的所述目标数据。
4.根据权利要求3所述的数据同步方法,其特征在于,所述对所述修复后的第三方数据库进行增量同步,包括:
获得插入所述目标数据的数据插入日志;
将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述目标数据。
5.根据权利要求1所述的数据同步方法,其特征在于,所述数据变更操作包括:删除目标数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述目标数据的第一数据删除日志;
将所述第一数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第一数据删除日志,以删除所述第三方数据库中的所述目标数据。
6.根据权利要求1所述的数据同步方法,其特征在于,所述数据变更操作包括:删除更新前数据以及插入更新后数据;
所述对同步到所述第三方数据库的数据进行一致性修复,包括:
获得删除所述更新前数据的第二数据删除日志;
将所述第二数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第二数据删除日志,以删除所述第三方数据库中的所述更新前数据;
获得删除所述更新后数据的第三数据删除日志;
将所述第三数据删除日志发送至所述第三方数据库,以使所述第三方数据库执行所述第三数据删除日志,以删除所述第三方数据库中的所述更新后数据。
7.根据权利要求6所述的数据同步方法,其特征在于,所述对所述修复后的第三方数据库进行增量同步,包括:
获得插入所述更新后数据的数据插入日志;
将所述数据插入日志发送至修复后的所述第三方数据库,以使所述第三方数据库执行所述数据插入日志,以在所述第三方数据库中插入所述更新后数据。
8.一种数据同步装置,其特征在于,包括:
获取单元,用于将源数据库的数据全量同步到第三方数据库,并获取所述数据全量同步期间所述源数据库发生的数据变更操作;
修复单元,用于对同步到所述第三方数据库的数据进行一致性修复,以在所述第三方数据库中删除所有发生所述数据变更操作的数据,得到修复后的第三方数据库;
同步单元,用于对所述修复后的第三方数据库进行增量同步,以在所述修复后的第三方数据库中增加所有所述数据变更操作在所述源数据库中增加的数据,得到目标第三方数据库。
9.一种数据同步装置,其特征在于,包括:
中央处理器,存储器,输入输出接口,有线或无线网络接口,电源;
所述存储器为短暂存储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,在控制面功能实体上执行所述存储器中的指令操作以执行权利要求1至7中任意一项所述的数据同步方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至7任意一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311655569.7A CN117708148A (zh) | 2023-12-01 | 2023-12-01 | 一种数据同步方法、数据同步装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311655569.7A CN117708148A (zh) | 2023-12-01 | 2023-12-01 | 一种数据同步方法、数据同步装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117708148A true CN117708148A (zh) | 2024-03-15 |
Family
ID=90158114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311655569.7A Pending CN117708148A (zh) | 2023-12-01 | 2023-12-01 | 一种数据同步方法、数据同步装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117708148A (zh) |
-
2023
- 2023-12-01 CN CN202311655569.7A patent/CN117708148A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241175B (zh) | 数据同步方法、装置、存储介质及电子设备 | |
US11256715B2 (en) | Data backup method and apparatus | |
EP3111347B1 (en) | Efficient methods and systems for consistent read in record-based multi-version concurrency control | |
US7870099B2 (en) | Computer readable recording medium having stored therein database synchronizing process program, and apparatus for and method of performing database synchronizing process | |
US7801846B2 (en) | Generating log sequence identifiers to apply a transaction to a storage system | |
US10055475B2 (en) | Authentication system, synchronization method, and authentication apparatus | |
CN111125214A (zh) | 一种轻量级增量数据同步方法、装置及计算机可读介质 | |
CN107391634B (zh) | 数据迁移方法及装置 | |
CN107479881B (zh) | 差异代码的同步方法、存储介质、电子设备及系统 | |
CN111414424B (zh) | 一种配置数据自动同步redis的方法、系统、介质及设备 | |
CN111639132B (zh) | 日志同步方法及设备 | |
US20100293143A1 (en) | Initialization of database for synchronization | |
CN115033578A (zh) | 一种业务数据更新的方法、相关装置及存储介质 | |
CN113761059A (zh) | 数据处理方法及装置 | |
CN117708148A (zh) | 一种数据同步方法、数据同步装置及存储介质 | |
CN101853278A (zh) | 数据存储系统应用方法 | |
CN117370454A (zh) | 数据处理方法 | |
CN111949725A (zh) | 数据的查询方法、装置、电子设备及计算机可读存储介质 | |
CN114490570A (zh) | 生产数据同步方法、装置、数据同步系统及服务器 | |
CN113282643A (zh) | 一种oracle数据库同步环境下的表对比方法及系统 | |
CN108255906B (zh) | 数据补录方法及装置 | |
CN111858609A (zh) | 区块链模糊查询方法及装置 | |
CN112685431B (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN111581023A (zh) | 银行内存数据处理方法及装置 | |
CN117435635A (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 |