CN112612852A - 数据同步方法及装置、电子设备、存储介质 - Google Patents
数据同步方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN112612852A CN112612852A CN202011586920.8A CN202011586920A CN112612852A CN 112612852 A CN112612852 A CN 112612852A CN 202011586920 A CN202011586920 A CN 202011586920A CN 112612852 A CN112612852 A CN 112612852A
- Authority
- CN
- China
- Prior art keywords
- cluster
- data
- data table
- standby
- difference
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000001360 synchronised effect Effects 0.000 claims description 52
- 238000012545 processing Methods 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000013508 migration Methods 0.000 description 8
- 230000005012 migration Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 201000006681 severe congenital neutropenia Diseases 0.000 description 3
- 125000000858 thiocyanato group Chemical group *SC#N 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请公开了一种数据同步方法及装置、电子设备、存储介质,其中,方法通过分别采集主集群和备集群中的所有数据表的表名以及系统修订号,然后基于数据表的表名以及系统修订号,确定出主备集群间不一致的数据表,即备集群中缺失的缺失数据表、备集群中多余的多余数据表以及系统修订号不一致的多组差异数据表,然后删除备集群中的各个多余数据表,以及在备集群中创建每个缺失数据表对应的数据表,并将每个缺失数据表及其对应的数据表确定为一组差异数据表,最后批量将每组差异数据表中的主集群的差异数据表的数据,同步至属于同组的备集群的差异数据表中。从而基于系统修订号实现了一种增量同步的方法,有效提高了数据同步的效率。
Description
技术领域
本申请涉及数据同步技术领域,特别涉及一种数据同步方法及装置、电子设备、存储介质。
背景技术
在机房搬迁或设备更换等应用场景下,需要对大量的数据进行迁移,即需要将数据从一个集群同步至另一个集群中。
当前的大数据平台数据迁移主要通过数据库链接工具DB-Link实现,其为数据库内部提供的远程数据库链接功能,可以通过与透明网关服务的协同工作,实现透明访问异地集群中的数据库的数据表或者远程数据库的数据表。具体的过程如图1所示,具体为:用户通过F5访问目标集群,并下发命令,使得目标集群F5跳转到目标集群的某个节点上。目标集群判断该命令是否访问本集群数据,还是访问其他集群数据,如果是访问其他集群,准备建立数据库链接通道,并生成执行计划,下发到透明网关F5,透明网关F5跳转到透明网关集群的某个节点上,并将命令下发给源集群F5,最后由源集群F5跳转到源集群的某个节点上,并开始执行命令,然后将执行结果发送到目标集群,并逐层返回执行结果。
但是这种方式并不能识别出发生变换的数据表,所以是通过全量同步实现的数据迁移。而由于现今需要迁移的数据量都相对庞大,所以全量同步需要耗费大量的时间,并且数据库链接通道的传输速率较低,因此使用这种数据同步方式进行数据迁移存在明显的效率低下的问题。
发明内容
基于上述现有技术的不足,本申请提供了一种数据同步方法及装置、电子设备、存储介质,以解决现有的数据同步方式进行数据迁移时效率较低的问题。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供了一种数据同步方法,包括:
分别采集主集群和备集群中的所有数据表的信息;其中,所述数据表的信息包括表名以及系统修订号;
将所述主集群的所述数据表与所述备集群的所述数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表;其中,一组所述差异数据表包括两个分别存在于所述主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;所述缺失数据表的表名仅出现在所述主集群中;所述多余数据表的表名仅出现在所述备集群中;
删除所述备集群中的各个所述多余数据表;
在所述备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表;其中,每个所述缺失数据表及其对应的数据表具有相同表结构和表名;
批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中。
可选地,在上述的数据同步方法中,分别采集主集群和备集群中的所有数据表的信息之前,还包括:
将分别处于所述主集群与所述备集群中对象名相同的目标对象对应的校验值进行对比,确定出所述校验值不一致的差异目标对象;其中,所述目标对象至少包括集群视图、存储过程描述、自定义函数;所述目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值;
分别在所述备集群中创建与每个在所述主集群中的所述差异目标对象相一致的对象,并删除所述备集群中的所述差异目标对象。
可选地,在上述的数据同步方法中,所述分别采集主集群和备集群中的所有数据表的信息,包括:
分别将所述主集群和备集群作为目标集群;
当监测到所述目标集群的状态表中写入新的同步标识时,判断当前所述目标集群是否存在写操作;
若判断出当前所述目标集群存在写操作,则在间隔预设时间长度后,返回执行所述判断当前所述目标集群是否存在写操作;
若判断出当前所述目标集群不存在写操作,则分别获取所述目标集群的各个节点的所有数据表的表名和系统修订号。
可选地,在上述的数据同步方法中,所述批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中,包括:
从待同步清单中,选取多个未同步的所述差异数据表的表名;
利用选取的多个所述差异数据表的表名,生成同步列表;
依次针对所述同步列表中每个所述差异数据表的表名,将所述主集群中所述表名对应的差异数据表中的差异数据,同步至所述备集群中所述表名对应的差异数据表中;
将同步失败且包含目标处理标识的所述主集群的差异数据表,全量同步至所述备集群中,并返回执行所述从待同步清单中,选取多个未同步的所述差异数据表的表名,直至所述待同步清单中不存在未同步的所述差异数据表的表名。
可选地,在上述的数据同步方法中,所述目标处理标识包括第一处理标识和第二处理标识,所述将同步失败且包含目标处理标识的所述主集群的差异数据表,全量同步至所述备集群中,包括:
分别针对每个第一数据表,修改所述备集群中表名与所述第一数据表相同的数据表的表名;其中,所述第一数据表指代同步失败且包含所述第一处理标识的所述主集群的差异数据表;
将所述备集群中表名与第二数据表相同的数据表删除;其中,所述第二数据表指代同步失败且包含所述第二处理标识的所述主集群的差异数据表;
将所述第一数据表和所述第二数据表中的数据,全量同步至将所述备集群中。
本申请第二方面提供了一种数据同步装置,包括:
采集单元,用于分别采集主集群和备集群中的所有数据表的信息;其中,所述数据表的信息包括表名以及系统修订号;
第一对比单元,用于将所述主集群的所述数据表与所述备集群的所述数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表;其中,一组所述差异数据表包括两个分别存在于所述主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;所述缺失数据表的表名仅出现在所述主集群中;所述多余数据表的表名仅出现在所述备集群中;
删除单元,用于删除所述备集群中的各个所述多余数据表;
创建单元,用于在所述备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表;其中,每个所述缺失数据表及其对应的数据表具有相同表结构和表名;
第一同步单元,用于批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中。
可选地,在上述的数据同步装置中,还包括:
第二对比单元,用于将分别处于所述主集群与所述备集群中对象名相同的目标对象对应的校验值进行对比,确定出所述校验值不一致的差异目标对象;其中,所述目标对象至少包括集群视图、存储过程描述、自定义函数;所述目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值;
第二同步单元,用于分别在所述备集群中创建与每个在所述主集群中的所述差异目标对象相一致的对象,并删除所述备集群中的所述差异目标对象。
可选地,在上述的数据同步装置中,所述采集单元,包括:
确定单元,用于分别将所述主集群和备集群作为目标集群;
判断单元,用于当监测到所述目标集群的状态表中写入新的同步标识时,判断当前所述目标集群是否存在写操作;
返回单元,用于在所述判断单元判断出当前所述目标集群存在写操作时,在间隔预设时间长度后,返回所述判断单元执行所述判断当前所述目标集群是否存在写操作;
采集子单元,用于在所述判断单元判断出当前所述目标集群不存在写操作时,分别获取所述目标集群的各个节点的所有数据表的表名和系统修订号。
可选地,在上述的数据同步装置中,所述第一同步单元,包括:
选取单元,用于从待同步清单中,选取多个未同步的所述差异数据表的表名;
生成单元,用于利用选取的多个所述差异数据表的表名,生成同步列表;
增量同步单元,用于依次针对所述同步列表中每个所述差异数据表的表名,将所述主集群中所述表名对应的差异数据表中的差异数据,同步至所述备集群中所述表名对应的差异数据表中;
全量同步单元,用于将同步失败且包含目标处理标识的所述主集群的差异数据表,全量同步至所述备集群中,并返回所述选取单元执行所述从待同步清单中,选取多个未同步的所述差异数据表的表名,直至所述待同步清单中不存在未同步的所述差异数据表的表名。
可选地,在上述的数据同步装置中,所述目标处理标识包括第一处理标识和第二处理标识,所述全量同步单元,包括:
第一处理单元,用于分别针对每个第一数据表,修改所述备集群中表名与所述第一数据表相同的数据表的表名;其中,所述第一数据表指代同步失败且包含所述第一处理标识的所述主集群的差异数据表;
第二处理单元,用于将所述备集群中表名与第二数据表相同的数据表删除;其中,所述第二数据表指代同步失败且包含所述第二处理标识的所述主集群的差异数据表;
全量同步子单元,用于将所述第一数据表和所述第二数据表中的数据,全量同步至将所述备集群中。
本申请第三方面提供了一种电子设备,包括:
存储器和处理器;
其中,所述存储器用于存储程序;
所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如上述任意一项所述的数据同步方法。
本申请第四方面提供了一种存储介质,用于存储计算机程序,所述计算机程序被执行时,用于实现如权利上述任意一项所述的数据同步方法。
本申请提供的一种数据同步方法,通过分别采集主集群和备集群中的所有数据表的表名以及系统修订号,然后将主集群的所述数据表与备集群的数据表的表名以及系统修订号进行对比,确定出缺失数据表、多余数据表以及多组差异数据表。其中,一组所述差异数据表包括两个分别存在于主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;缺失数据表的表名仅出现在主集群中,多余数据表的表名仅出现在备集群中。从而通过数据表的系统修订号,准确识别出两个集群中不一致的数据表。然后,删除备集群中的各个多余数据表,以及在备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表,最后批量将每组差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的备集群的差异数据表中,从而实现了仅对不一致的数据进行同步,即仅对部分数据进行同步,实现了数据的增量同步,大幅缩短同步时间,有效提高了同步的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中进行数据同步的方法的流程示意图;
图2为本申请实施例提供的一种数据同步系统的结构示意图;
图3为本申请另一实施例提供的一种数据同步方法的流程图;
图4为本申请另一实施例提供的一种采集数据表的信息的方法的流程图;
图5为本申请另一实施例提供的一种对象同步的方法的流程图;
图6为本申请另一实施例提供的一种同步差异数据表的方法的流程图;
图7为本申请另一实施例提供的一种全量同步数据表的方法的流程图;
图8为本申请另一实施例提供的一种数据同步装置的结构示意图;
图9为本申请另一实施例提供的一种采集单元的结构示意图;
图10为本申请另一实施例提供的一种第一同步单元的结构示意图;
图11为本申请另一实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请提供了一种数据同步的方法,以解决现有的数据同步方式进行数据迁移时效率较低的问题。
可选地,本申请提供的数据同步方法,可以应用数据库间的数据迁移等需要数据同步的应用场景,例如可以应用于大规模并行分析数据库(Analytical MassivelyParallel Processing,MPP)的数据迁移。
可选地,为了实现本申请提供的数据同步的方法,本申请实施例提供了一种数据同步系统。如图2所示,本申请实施例提供的数据同步系统,具体包括:同步控制模块201、元数据采集控制模块202、元数据采集模块203、同步执行模块204。
其中,同步控制模块主要用于控制数据同步系统中的其他模块,具体用于负责数据同步的总体调度和控制,包括同步时间控制、并发控制、各子模块的调用、系统参数配置、同步过程的控制以及状态维护、统计信息汇总等。
元数据采集控制模块用于控制元数据采集时间、元数据比对、存储过程、函数及集群视图比对,以及比对后结果插入Oracle数据库,供同步执行模块中同步执行程序使用。其中,在申请中提及的元数据为系统修订号(System Change Number,SCN)。
元数据采集模块,主用于负责元数据信息的采集,具体如图2所示,通过元数据采集程序,采集主集群和备集群中的各节点主分片数据的系统修订号,具体需要部署在集群各个节点上。
同步执行模块,主要用于对主集群和备集群中不一致的数据表、数据库对象进行同步。
可选地,数据同步系统还可以进一步包括:同步报表生成模块,主要用于生成同步结果信息。
基于上述提供的数据同步系统,本申请实施例提供了一种数据同步方法,如图3所示,具体包括以下步骤:
S301、分别采集主集群和备集群中的所有数据表的信息,数据表的信息包括表名以及系统修订号。
其中,系统修订号,即SCN是记录数据存储单元(Data Cell)中的数据变化的标记数,所以其属于其中一类元数据。由于,数据库的每次写操作都会引起SCN相应地递增,因此本申请利用SCN的这个特性确定相同表名的数据表的数据是否相一致。
具体的,可以由同步控制模块执行控制程序在主集群和备集群中插入一行启动元数据采集的标记,从而控制主集群和备集群的各个节点的元数据的采集开始时间。主集群和备集群在检测到该标记时,开始采集集群中的各个节点中的数据表表的SCN以及表名。
具体的,如图4所示,步骤S301的一种具体实施方式,具体包括以下步骤:
S401、分别将主集群和备集群作为目标集群。
S402、当监测到目标集群的状态表中写入新的同步标识时,判断当前目标集群是否存在写操作。
具体的,可以通过轮询的方式,确定集群数据库下状态表中是否写入新的同步标识。由于,在有写入操作时,数据表中的数据会出现变化,并且SCN也会相应地递增,所以需要保证在没有进行写操作时,才能获取新的准确地SCN,因此当监测到目标集群的状态表中写入新的同步标识时,判断当前目标集群是否存在写操作。
所以,若判断出当前目标集群存在写操作,则执行步骤S403。若判断出当前目标集群不存在写操作,则执行步骤S404。
S403、等待预设时间长度。
需要说明的是,在执行步骤S403后,返回步骤S402,即在间隔预设时间长度后,返回判断当前目标集群是否存在写操作。
S404、分别获取目标集群的各个节点的所有数据表的表名和系统修订号。
具体的,可以维护目标集群中的各个节点的SCN开始采集时间以及状态。从而在达到一个节点的SCN开始采集时间时,并发获取该节点中的所有数据表的主本的SCN以及表名。
可选地,可以将获取的数据表的表名和SCN插入集群数据库的检查结果表中,以便后续根据表名进行SCN的对比。并且,在完成采集后,可以将节点的状态置为已完成,从而可避免出现重复采集。
需要说明的是,除了同步数据表中的数据外,在迁移过程中还需保证各个对象的同步,因此在步骤S301之前,还可以进一步先对多类目标对象进行同步。如图5所示,具体的同步对象的过程包括以下步骤:
S501、获取主集群和备集群中的各个目标对象的对象名以及对应的校验值。
其中,目标对象至少包括集群视图、存储过程描述、自定义函数。当然,若两个集群间还需要其他需要同步的对象,则目标对象中也还可以进一步包括其他对象。
需要说明的是,在本申请实施例中,对目标对象进行同步同样不采用全量同步,仅对存在两个集群中存在差异的目标对象进行同步,从而可以有效地提供同步效率。由于对比这部分对象无法与数据一样,通过SCN判断是否相一致,所以本申请实施例中通过信息摘要算法,如信息摘要算法MD5,对目标对象的主体进行计算得到的散列值,从而通过散列值判断两个集群的目标对象是否一致,即目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值。
可选地,可以预先设置好同步时间,当到达同时时间时,开始执行步骤S501。
S502、将分别处于主集群与备集群中对象名相同的目标对象对应的校验值进行对比,确定出校验值不一致的差异目标对象。
S503、分别在备集群中创建与每个处于主集群中的差异目标对象相一致的对象,并删除备集群中的差异目标对象。
S302、将主集群的数据表与备集群的数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表。
其中,一组差异数据表包括两个分别存在于主集群和备集群中的表名相同、且系统修订号不一致的数据表。具体的,将主集群和备集群中的表名相同的数据表的SCN进行对比,若两个数据表的SCN不相同则将这两个数据表确定为差异数据表,从而每两个差异数据表组成一组。
缺失数据表的表名仅出现在主集群中,即将仅存在于主集群的数据表确定为缺失数据表。由于仅出现在主集群中,说明备集群缺失该数据表,因此该数据表确定为缺失数据表。而多余数据表的表名仅出现在备集群中,即多余数据表指的仅存在与备集群中的数据表,说明在主集群中没有该数据表,所以数据表为多余的。
S303、删除备集群中的各个多余数据表。
由于,多余数据表指的是在备集群中,相比主集群多出的数据表,所以为了使得备集群与主集群的数据相一致,因此将备集群中的各个多余数据表删除。
S304、在备集群中创建每个缺失数据表对应的数据表,并将每个缺失数据表及其对应的数据表确定为一组差异数据表。
其中,每个缺失数据表及其对应的数据表具有相同表结构和表名。由于,缺失数据表指的是在备集群中缺失的与该数据表相一致的数据表,所以在备集群中创建与其具有相同表结构和表名数据表。由于,缺失数据表与其对应的新建的数据表分别位于主集群和备集群中,并且表明相一致,但是新建的数据表没有数据,所以两个表的数据不一致,即两个表的SCN不一致,因此可见缺失数据表及其对应的数据表符合差异数据表的定义,所以将每个缺失数据表及其对应的数据表确定为一组差异数据表,从而后续进行统一的数据同步。
S305、批量将每组差异数据表中的主集群的差异数据表的数据,同步至属于同组的备集群的差异数据表中。
可选地,可以通过启动同步执行程序,并创建日志目录,以供日志输出以及中间表的列表文件的生成。然后,从待同步清单中,获取一批需要同步的表名,即差异数据表的表名,标记为开始状态,并生成同步表到列表文件中。通过启动同步命令,以调用集群间同步工具,依次对该批次的数据表进行同步。具体的,分别针对每组差异数据表,将该组差异数据表中的主集群的差异数据表的数据,同步至该组差异数据中的备集群的差异数据表中。
具体的,可以同轮询判断对象同步,即图5对应的对象同步的过程、备有主无的数据表的删除,即步骤S303的过程、以及数据同步,即步骤S305的过程,是否都已全部完成。若已全部完成,则可以生成同步统计信息,具体可以包括本次同步的耗时,以及同步的数据量等,最后标记完成状态。
具体的,如图6所示,步骤S305的一种具体实施方式,包括以下步骤:
S601、从待同步清单中,选取多个未同步的差异数据表的表名。
S602、利用选取的多个差异数据表的表名,生成同步列表。
S603、依次针对同步列表中每个差异数据表的表名,将主集群中表名对应的差异数据表中的差异数据,同步至备集群中表名对应的差异数据表中。
其中,差异数据指的是主集群的差异数据表中包含而同组的备集群的差异数据表中不包含的数据,从而实现两个数据表间的增量同步,也不需要进行全量同步,从而有效地提供同步的效率。
可选地,在同步完成后,可以更新增量完成状态,从而可以获取同步失败的差异数据表,
S604、将同步失败且包含目标处理标识的主集群的差异数据表,全量同步至备集群中。
由于,由于同步识别的数据表的数量相对较小,而通过增量同步的方式同步识别,所以对于这些少量的同步识别的数据表,为避免再次同步增量失败,所以本申请实施例中,选择将这部分数据表进行全量同步。由于数据表的数量相对较少,并不会影响整体的同步效率。当然,也可以选择针对这些同步识别的差异数据表,进行再次的增量同步。
而由于部分不重要的数据表,可以选择不再本次同步时同步,所以在同时是否时,可以不对其进行同步,因此本申请实施例中,在设置数据表中设置处理标识,通过处理标识判定哪些同步识别的数据表需要进行全量同步。
需要说明的是,在执行步骤S604后,可以归还并发,并返回执行步骤S601,进行下一批差异数据表的同步,直至待同步清单不存在未同步的差异数据表的表名,即直至所有差异数据表完成同步。
可选地,本申请另一实施例中,目标处理标识包括第一处理标识和第二处理标识,步骤S604的一种具体实施方式,如图7所示,具体包括以下步骤:
S701、分别针对每个第一数据表,修改备集群中表名与第一数据表相同的数据表的表名,第一数据表指代同步失败且包含第一处理标识的主集群的差异数据表。
具体的,在本申请实施例中,数据表中的处理标识包括三种,分别为第一处理标识、第二处理标识和第三处理标识。其中,第一处理标识和第二处理标识为目标处理标识。第三处理标识用于指示同步失败后不进行后续处理,通常用于标记一些相对不重要的数据表。第一处理标识则用于指示执行步骤S701,第二处理标识用于指示执行步骤S702。
S702、将备集群中表名与第二数据表相同的数据表删除,第二数据表指代同步失败且包含第二处理标识的主集群的差异数据表。
需要说明的是,步骤S701和步骤S702是相对独立的步骤所以在本申请实施例中的执行顺序仅是其中一种可选地的方式。
S703、将第一数据表和第二数据表中的数据,全量同步至将备集群中。
具体可以针对第一数据表和第二数据表,生成相应的同步列表,然后通过运行全量同步程序,将第一数据表和第二数据表的数据同步到备集群的数据表中,并更新全量同步状态。
本申请实施例提供了一种数据同步方法,通过分别采集主集群和备集群中的所有数据表的表名以及系统修订号,然后将主集群的所述数据表与备集群的数据表的表名以及系统修订号进行对比,确定出缺失数据表、多余数据表以及多组差异数据表。其中,一组所述差异数据表包括两个分别存在于主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;缺失数据表的表名仅出现在主集群中,多余数据表的表名仅出现在备集群中。从而通过数据表的系统修订号,准确识别出两个集群中不一致的数据表。然后,删除备集群中的各个多余数据表,以及在备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表,最后批量将每组差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的备集群的差异数据表中,从而实现了仅对不一致的数据进行同步,即仅对部分数据进行同步,实现了数据的增量同步,大幅缩短同步时间,有效提高了同步的效率。
本申请另一实施例提供了一种数据同步装置,如图8所示,包括以下单元:
采集单元801,用于分别采集主集群和备集群中的所有数据表的信息。
其中,数据表的信息包括表名以及系统修订号。
第一对比单元802,用于将主集群的数据表与备集群的数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表。
其中,一组差异数据表包括两个分别存在于主集群和备集群中的表名相同、且系统修订号不一致的数据表。缺失数据表的表名仅出现在主集群中;多余数据表的表名仅出现在备集群中。
删除单元803,用于删除备集群中的各个多余数据表。
创建单元804,用于在备集群中创建每个缺失数据表对应的数据表,并将每个缺失数据表及其对应的数据表确定为一组差异数据表。
其中,每个缺失数据表及其对应的数据表具有相同表结构和表名。
第一同步单元805,用于批量将每组差异数据表中的主集群的差异数据表的数据,同步至属于同组的备集群的差异数据表中。
可选地,在本申请另一实施例提供的数据同步装置中,还包括以下单元:
第二对比单元,用于将分别处于主集群与备集群中对象名相同的目标对象对应的校验值进行对比,确定出校验值不一致的差异目标对象。
其中,目标对象至少包括集群视图、存储过程描述、自定义函数。目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值。
第二同步单元,用于分别在备集群中创建与每个在主集群中的差异目标对象相一致的对象,并删除备集群中的差异目标对象。
可选地,本申请上述实施例中的采集单元,如图9所示,具体包括:
确定单元901,用于分别将主集群和备集群作为目标集群。
判断单元902,用于当监测到目标集群的状态表中写入新的同步标识时,判断当前目标集群是否存在写操作。
返回单元903,用于在判断单元902判断出当前目标集群存在写操作时,在间隔预设时间长度后,返回判断单元执行判断当前目标集群是否存在写操作。
采集子单元904,用于在判断单元902判断出当前目标集群不存在写操作,则分别获取目标集群的各个节点的所有数据表的表名和系统修订号。
可选地,本申请另一实施例提供的数据同步装置中的第一同步单元,如图10所示,包括以下单元:
选取单元1001,用于从待同步清单中,选取多个未同步的差异数据表的表名。
生成单元1002,用于利用选取的多个差异数据表的表名,生成同步列表;
增量同步单元1003,用于依次针对同步列表中每个差异数据表的表名,将主集群中表名对应的差异数据表中的差异数据,同步至备集群中表名对应的差异数据表中;
全量同步单元1004,用于将同步失败且包含目标处理标识的主集群的差异数据表,全量同步至备集群中,并返回选取单元1001执行从待同步清单中,选取多个未同步的差异数据表的表名,直至待同步清单中不存在未同步的差异数据表的表名。
可选地,本申请另一实施例中,目标处理标识包括第一处理标识和第二处理标识。在该实施例中,全量同步单元,包括以下单元:
第一处理单元,用于分别针对每个第一数据表,修改备集群中表名与第一数据表相同的数据表的表名。
其中,第一数据表指代同步失败且包含第一处理标识的主集群的差异数据表。
第二处理单元,用于将备集群中表名与第二数据表相同的数据表删除。其中,第二数据表指代同步失败且包含第二处理标识的主集群的差异数据表。
全量同步子单元,用于将第一数据表和第二数据表中的数据,全量同步至将备集群中。
本申请另一实施例提供了一种电子设备,如图11所示,包括:
存储器1101和处理器1102。
其中,存储器1101用于存储程序,而处理器1102用于执行存储器1101存储的程序,并且该程序被执行时,具体用于实现如上述任意一个实施例提供的数据同步方法。
本申请另一实施例提供了一种存储介质,用于存储计算机程序,该计算机程序被执行时,用于实现如权利上述任意一项所述的数据同步方法。
需要说明的是,本申请实施例提供的存储介质为计算机存储介质,计算机存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据同步方法,其特征在于,包括:
分别采集主集群和备集群中的所有数据表的信息;其中,所述数据表的信息包括表名以及系统修订号;
将所述主集群的所述数据表与所述备集群的所述数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表;其中,一组所述差异数据表包括两个分别存在于所述主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;所述缺失数据表的表名仅出现在所述主集群中;所述多余数据表的表名仅出现在所述备集群中;
删除所述备集群中的各个所述多余数据表;
在所述备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表;其中,每个所述缺失数据表及其对应的数据表具有相同表结构和表名;
批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中。
2.根据权利要求1所述的方法,其特征在于,分别采集主集群和备集群中的所有数据表的信息之前,还包括:
将分别处于所述主集群与所述备集群中对象名相同的目标对象对应的校验值进行对比,确定出所述校验值不一致的差异目标对象;其中,所述目标对象至少包括集群视图、存储过程描述、自定义函数;所述目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值;
分别在所述备集群中创建与每个在所述主集群中的所述差异目标对象相一致的对象,并删除所述备集群中的所述差异目标对象。
3.根据权利要求1所述的方法,其特征在于,所述分别采集主集群和备集群中的所有数据表的信息,包括:
分别将所述主集群和备集群作为目标集群;
当监测到所述目标集群的状态表中写入新的同步标识时,判断当前所述目标集群是否存在写操作;
若判断出当前所述目标集群存在写操作,则在间隔预设时间长度后,返回执行所述判断当前所述目标集群是否存在写操作;
若判断出当前所述目标集群不存在写操作,则分别获取所述目标集群的各个节点的所有数据表的表名和系统修订号。
4.根据权利要求1所述的方法,其特征在于,所述批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中,包括:
从待同步清单中,选取多个未同步的所述差异数据表的表名;
利用选取的多个所述差异数据表的表名,生成同步列表;
依次针对所述同步列表中每个所述差异数据表的表名,将所述主集群中所述表名对应的差异数据表中的差异数据,同步至所述备集群中所述表名对应的差异数据表中;
将同步失败且包含目标处理标识的所述主集群的差异数据表,全量同步至所述备集群中,并返回执行所述从待同步清单中,选取多个未同步的所述差异数据表的表名,直至所述待同步清单中不存在未同步的所述差异数据表的表名。
5.根据权利要求4所述的方法,其特征在于,所述目标处理标识包括第一处理标识和第二处理标识,所述将同步失败且包含目标处理标识的所述主集群的差异数据表,全量同步至所述备集群中,包括:
分别针对每个第一数据表,修改所述备集群中表名与所述第一数据表相同的数据表的表名;其中,所述第一数据表指代同步失败且包含所述第一处理标识的所述主集群的差异数据表;
将所述备集群中表名与第二数据表相同的数据表删除;其中,所述第二数据表指代同步失败且包含所述第二处理标识的所述主集群的差异数据表;
将所述第一数据表和所述第二数据表中的数据,全量同步至将所述备集群中。
6.一种数据同步装置,其特征在于,包括:
采集单元,用于分别采集主集群和备集群中的所有数据表的信息;其中,所述数据表的信息包括表名以及系统修订号;
第一对比单元,用于将所述主集群的所述数据表与所述备集群的所述数据表的信息进行对比,确定出缺失数据表、多余数据表以及多组差异数据表;其中,一组所述差异数据表包括两个分别存在于所述主集群和所述备集群中的表名相同、且系统修订号不一致的数据表;所述缺失数据表的表名仅出现在所述主集群中;所述多余数据表的表名仅出现在所述备集群中;
删除单元,用于删除所述备集群中的各个所述多余数据表;
创建单元,用于在所述备集群中创建每个所述缺失数据表对应的数据表,并将每个所述缺失数据表及其对应的数据表确定为一组差异数据表;其中,每个所述缺失数据表及其对应的数据表具有相同表结构和表名;
第一同步单元,用于批量将每组所述差异数据表中的所述主集群的差异数据表的数据,同步至属于同组的所述备集群的差异数据表中。
7.根据权利要求6所述的装置,其特征在于,还包括:
第二对比单元,用于将分别处于所述主集群与所述备集群中对象名相同的目标对象对应的校验值进行对比,确定出所述校验值不一致的差异目标对象;其中,所述目标对象至少包括集群视图、存储过程描述、自定义函数;所述目标对象对应的校验值为采用信息摘要算法对目标对象的主体进行计算得到的散列值;
第二同步单元,用于分别在所述备集群中创建与每个在所述主集群中的所述差异目标对象相一致的对象,并删除所述备集群中的所述差异目标对象。
8.根据权利要求6所述的装置,其特征在于,所述采集单元,包括:
确定单元,用于分别将所述主集群和备集群作为目标集群;
判断单元,用于当监测到所述目标集群的状态表中写入新的同步标识时,判断当前所述目标集群是否存在写操作;
返回单元,用于在所述判断单元判断出当前所述目标集群存在写操作时,在间隔预设时间长度后,返回所述判断单元执行所述判断当前所述目标集群是否存在写操作;
采集子单元,用于在所述判断单元判断出当前所述目标集群不存在写操作时,分别获取所述目标集群的各个节点的所有数据表的表名和系统修订号。
9.一种电子设备,其特征在于,包括:
存储器和处理器;
其中,所述存储器用于存储程序;
所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如权利要求1至5任意一项所述的数据同步方法。
10.一种存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,用于实现如权利要求1至5任意一项所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011586920.8A CN112612852B (zh) | 2020-12-29 | 2020-12-29 | 数据同步方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011586920.8A CN112612852B (zh) | 2020-12-29 | 2020-12-29 | 数据同步方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612852A true CN112612852A (zh) | 2021-04-06 |
CN112612852B CN112612852B (zh) | 2024-06-11 |
Family
ID=75248748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011586920.8A Active CN112612852B (zh) | 2020-12-29 | 2020-12-29 | 数据同步方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612852B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051563A (zh) * | 2024-04-15 | 2024-05-17 | 天津南大通用数据技术股份有限公司 | 一种基于分布式数据库同构集群的容灾方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060222160A1 (en) * | 2005-03-31 | 2006-10-05 | Marcel Bank | Computer network system for building, synchronising and/or operating a second database from/with a first database, and procedures for it |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN105933446A (zh) * | 2016-06-28 | 2016-09-07 | 中国农业银行股份有限公司 | 一种大数据平台业务双活实现方法及系统 |
CN106126753A (zh) * | 2016-08-23 | 2016-11-16 | 易联众信息技术股份有限公司 | 基于大数据的增量抽取的方法 |
CN107609188A (zh) * | 2017-10-09 | 2018-01-19 | 上海新炬网络信息技术股份有限公司 | 基于GoldenGate的数据同步校验方法 |
CN108897863A (zh) * | 2018-06-29 | 2018-11-27 | 联想(北京)有限公司 | 数据同步方法及其系统以及服务器集群 |
CN109933632A (zh) * | 2019-04-04 | 2019-06-25 | 杭州数梦工场科技有限公司 | 一种数据库的数据迁移方法、装置及设备 |
CN110083614A (zh) * | 2019-04-04 | 2019-08-02 | 中国银联股份有限公司 | 一种数据处理方法及服务器 |
CN110175213A (zh) * | 2019-05-27 | 2019-08-27 | 浪潮软件集团有限公司 | 一种基于SCN方式的Oracle数据库同步系统及方法 |
CN110287116A (zh) * | 2019-06-27 | 2019-09-27 | 苏宁消费金融有限公司 | 多数据库校正方法 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
-
2020
- 2020-12-29 CN CN202011586920.8A patent/CN112612852B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060222160A1 (en) * | 2005-03-31 | 2006-10-05 | Marcel Bank | Computer network system for building, synchronising and/or operating a second database from/with a first database, and procedures for it |
CN105912628A (zh) * | 2016-04-07 | 2016-08-31 | 北京奇虎科技有限公司 | 主从数据库的同步方法及装置 |
CN105933446A (zh) * | 2016-06-28 | 2016-09-07 | 中国农业银行股份有限公司 | 一种大数据平台业务双活实现方法及系统 |
CN106126753A (zh) * | 2016-08-23 | 2016-11-16 | 易联众信息技术股份有限公司 | 基于大数据的增量抽取的方法 |
CN107609188A (zh) * | 2017-10-09 | 2018-01-19 | 上海新炬网络信息技术股份有限公司 | 基于GoldenGate的数据同步校验方法 |
CN108897863A (zh) * | 2018-06-29 | 2018-11-27 | 联想(北京)有限公司 | 数据同步方法及其系统以及服务器集群 |
CN109933632A (zh) * | 2019-04-04 | 2019-06-25 | 杭州数梦工场科技有限公司 | 一种数据库的数据迁移方法、装置及设备 |
CN110083614A (zh) * | 2019-04-04 | 2019-08-02 | 中国银联股份有限公司 | 一种数据处理方法及服务器 |
CN110175213A (zh) * | 2019-05-27 | 2019-08-27 | 浪潮软件集团有限公司 | 一种基于SCN方式的Oracle数据库同步系统及方法 |
CN110287116A (zh) * | 2019-06-27 | 2019-09-27 | 苏宁消费金融有限公司 | 多数据库校正方法 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118051563A (zh) * | 2024-04-15 | 2024-05-17 | 天津南大通用数据技术股份有限公司 | 一种基于分布式数据库同构集群的容灾方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112612852B (zh) | 2024-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102982085B (zh) | 数据迁移系统和方法 | |
CN109460349B (zh) | 一种基于日志的测试用例生成方法和装置 | |
CN109241175A (zh) | 数据同步方法、装置、存储介质及电子设备 | |
CN113111129B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN109933632B (zh) | 一种数据库的数据迁移方法、装置及设备 | |
CN105843702B (zh) | 一种用于数据备份的方法以及装置 | |
CN111639082B (zh) | 基于Ceph的十亿级节点规模知识图谱的对象存储管理方法及系统 | |
CN108153619A (zh) | 一种数据校对方法和装置 | |
CN113553313B (zh) | 一种数据迁移方法及系统、存储介质、电子设备 | |
CN112612852B (zh) | 数据同步方法及装置、电子设备、存储介质 | |
CN106780157B (zh) | 基于Ceph的电网多时态模型存储与管理系统及方法 | |
CN114595288A (zh) | 一种基于sql命令级的多idc分布式系统数据同步方法 | |
CN114153809A (zh) | 基于数据库日志并行实时增量统计的方法 | |
CN111737226B (zh) | 一种基于Redis集群优化HBase集群性能的方法 | |
CN117473021A (zh) | 一种基于cdc方式的达梦数据库增量同步实现方法 | |
CN111209652B (zh) | 一种电力系统静态设备模型时序构建方法及装置 | |
CN111159020B (zh) | 一种应用于同步软件测试的方法和装置 | |
CN112231324B (zh) | 一种实现增量数据比对的系统及方法 | |
CN108900497B (zh) | 一种异构系统间的数据同步方法及系统 | |
CN111858767A (zh) | 同步数据的处理方法、装置、设备及存储介质 | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN115827777A (zh) | 一种多数据源的自适应同步与差异识别方法、装置及设备 | |
CN112084259A (zh) | 一种基于扩展字段特征标示的数据库实时同步方法 | |
CN113420036A (zh) | 一种电网监控系统内存库关系库一致性校验方法 | |
CN111221801A (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 |