CN115373889A - 数据同步中的数据比对校验及数据修复的方法及装置 - Google Patents

数据同步中的数据比对校验及数据修复的方法及装置 Download PDF

Info

Publication number
CN115373889A
CN115373889A CN202110546602.7A CN202110546602A CN115373889A CN 115373889 A CN115373889 A CN 115373889A CN 202110546602 A CN202110546602 A CN 202110546602A CN 115373889 A CN115373889 A CN 115373889A
Authority
CN
China
Prior art keywords
data set
data
end database
database
time
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
Application number
CN202110546602.7A
Other languages
English (en)
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.)
China Mobile Communications Group Co Ltd
China Mobile Information Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Information Technology 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 China Mobile Communications Group Co Ltd, China Mobile Information Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202110546602.7A priority Critical patent/CN115373889A/zh
Publication of CN115373889A publication Critical patent/CN115373889A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/2365Ensuring data consistency and integrity
    • 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

Landscapes

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

Abstract

本发明提供了一种数据同步中的数据比对校验及数据修复的方法及装置,包括:对源端数据库t1时刻的全量数据CRC校验码和目标端数据库t1时刻的全量数据CRC校验码进行对比;若对比结果不一致,则确定差异数据集,并生成第一数据集;获取目标端数据库中的差异数据集未执行的交易命令集合;基于目标端数据库中的差异数据集未执行的交易命令集合在目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对源端数据库中的差异数据集和第二数据集进行对比;若对比结果不一致,则进行数据修复,本发明适用于静态数据比对场景、动态数据比对场景、同构数据同步场景、异构数据同步场景、全量数据比对校验场景及单独比对校验场景,实用性非常广泛。

Description

数据同步中的数据比对校验及数据修复的方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据同步中的数据比对校验及数据修复的方法及装置。
背景技术
数据同步过程中的数据比对和校验有多种分类,如根据数据库类型的差异不同分为:同构数据比对和异构数据比对;根据数据变化状态的不同分为:静态数据比对和动态数据比对。如果校验的数据不一致,根据比对校验方法的不同,修复的方式也有差异。
目前常用比对方法主要有快照(Snapshot)比对法、日志比对法、控制表比对发法、时间戳比对发法及控制表和时间戳相结合的比对方法;对于快照比对法来说:采用上述快照法不依赖任何机制,不占用额外的系统资源,但因为它是对数据块的完整拷贝,所以两端数据库必须是完全同构的数据库种类、相同的版本和数据结构才可以进行比对,不适用异构数据库之间的数据比对校验;对于日志比对法来说:因为不同种类数据库、不同版本数据库的操作日志是不相同的,这种方法只能用于同种类、同版本数据库之间的数据比对,不适用于异构数据库之间的数据同步比对和校验;对于控制表比对法来说:控制表需要收集两端数据库的所有操作记录,会占用大量的存储空间,另外比对程序会根据收到的记录信息去两端数据库进行逐条数据查询,这对两端数据库的性能影响较大;对于时间戳比对法来说:通过获取多个时间点和时间段的全量数据和增量数据才能完成一次数据比对校验,效率低下,同时对源端和目标端数据库的性能影响都很大,并不适用于重要生产系统的数据比对校验;对于控表法与时间戳相结合的方法:这种方法是通过创建临时表保存数据变更信息和时间戳相结合的方式实现同步增量数据获取、同步和校验的方法,这种方法继承了控表法和传统时间戳法对资源占用过大的缺点,并不适用于繁忙或者重要数据库的比对校验,会严重影响生产系统的业务运行;可见,上述目前常用比对方法均未解决如下问题:1、异构数据库和不同数据库版本之间的数据比过程中的效率问题;2、异构数据库之间的全量数据和增量数据的快速比对校验问题;3、异构数据库和不同数据库版本之间的数据比对校验资源消耗过多的问题;4、在不影响其它数据同步的情况下,对不一致的数据进行精确修复的问题。
发明内容
针对现有技术中存在的问题,本发明实施例提供一种数据同步中的数据比对校验及数据修复的方法及装置。
第一方面,本发明实施例提供一种数据同步中的数据比对校验及数据修复的方法,包括:
获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;
若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;
基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;
基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
对所述源端数据库中的差异数据集和所述第二数据集进行对比;
若对比结果不一致,则对不一致的数据集进行数据修复。
进一步地,还包括:
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比,若对比结果一致,则校验结束。
进一步地,所述若对比结果不一致,则对不一致的数据集进行数据修复,包括:
在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中;
清空所述目标端数据库中的差异数据集在t2时刻对应的数据集;
基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
进一步地,所述基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复,包括:
t2时刻,对所述源端数据库中的差异数据集在t2时刻对应的数据集进行操作日志分析,确定与所述源端数据库中的差异数据集在t2时刻对应的数据集对应的增量;
基于所述增量,在生成第三数据集后完成对不一致的数据集修复。
第二方面,本发明实施例提供了一种数据同步中的数据比对校验及数据修复的装置,包括:
第一获取模块,用于获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第二获取模块,用于获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第一对比模块,用于对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;
第一生成模块,用于若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;
第三获取模块,用于基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;
第二生成模块,用于基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
第二对比模块,用于对所述源端数据库中的差异数据集和所述第二数据集进行对比;
修复模块,用于若对比结果不一致,则对不一致的数据集进行数据修复。
进一步地,第一对比模块,还用于:
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比,若对比结果一致,则校验结束。
进一步地,所述修复模块,具体用于:
在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中;
清空所述目标端数据库中的差异数据集在t2时刻对应的数据集;
基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
进一步地,所述修复模块在执行所述基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复时,包括:
t2时刻,对所述源端数据库中的差异数据集在t2时刻对应的数据集进行操作日志分析,确定与所述源端数据库中的差异数据集在t2时刻对应的数据集对应的增量;
基于所述增量,在生成第三数据集后完成对不一致的数据集修复。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上第一方面所述的数据同步中的数据比对校验及数据修复的方法的步骤。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上第一方面所述的数据同步中的数据比对校验及数据修复的方法的步骤。
由上述技术方案可知,本发明实施例提供的数据同步中的数据比对校验及数据修复的方法及装置,通过获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对所述源端数据库中的差异数据集和所述第二数据集进行对比;若对比结果不一致,则对不一致的数据集进行数据修复,从而完成数据同步中的数据比对校验及数据修复,本发明实施例适用于静态数据比对场景、动态数据比对场景、同构数据同步场景、异构数据同步场景、全量数据比对校验场景及单独比对校验场景,实用性非常广泛。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的数据同步中的数据比对校验及数据修复的方法的流程示意图;
图2为本发明另一实施例提供的数据同步中的数据比对校验及数据修复的方法的流程示意图;
图3为本发明一实施例提供的差量交易集示意图;
图4为本发明一实施例提供的差量交易产生原因示意图;
图5为本发明一实施例提供的数据修复的流程示意图;
图6为本发明一实施例提供的数据同步中的数据比对校验及数据修复的装置的结构示意图;
图7为本发明一实施例提供的日志分析与交易合成示意图;
图8为本发明一实施例中电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下面将通过具体的实施例对本发明提供的数据同步中的数据比对校验及数据修复的方法进行详细解释和说明。
图1为本发明一实施例提供的数据同步中的数据比对校验及数据修复的方法的流程示意图;如图1所示,该方法包括:
步骤101:获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号。
步骤102:获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号。
步骤103:对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比。
步骤104:若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集。
步骤105:基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合。
步骤106:基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
步骤107:对所述源端数据库中的差异数据集和所述第二数据集进行对比。
步骤108:若对比结果不一致,则对不一致的数据集进行数据修复。
在本实施例中,举例来说,参见图2,获取源端数据库t1时刻的全量数据CRC校验码和最后一个完成的交易序号S1(即源端数据库,交易队列中末尾的交易序号),获取目标端数据库t1时刻的全量数据CRC校验码和最后一个完成的交易序号S1’(即目标端数据库,交易队列中末尾的交易序号);对源端数据库和目标端数据库t1时刻的全量CRC校验码进行比对(即对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比),如果数据一致说明在此期间无增量数据产生,校验完毕;如果数据不一致,根据对比结果,获取源端数据库差异数据集(t1,a1),获取目标端数据库差异数据集(t1,b1),并把(t1,b1)加载到校验服务器中生成数据集(t1,b1’),即确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;根据源端t1时刻最后一个交易号S1与目标端t1时刻最后一个交易号S1',来获取差异数据(t1,b1)还未执行的交易命令集合(即基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合),并在(t1,b1’)数据集上执行,生成数据集(t1,b2),即基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对比(t1,a1)和(t1,b2)数据集是否一致(即对所述源端数据库中的差异数据集和所述第二数据集进行对比);如果比对校验结果不一致,说明源和目标数据库确实存在不一致的数据,对不一致的数据集进行数据修复。
在本实施例中,需要说明的是,在数据同步过程中,本发明实施例把数据发送端叫做源端数据库,把数据接收端叫做目标端数据库;获取t1时刻源端数据库的全量数据CRC校验值,其中t1时刻是指开始做数据比对校验的任意时刻,并不要求具备某些特殊意义,全量数据可以指全库数据集、也可以指某一些数据表的集合;获取t1时刻源端全量数据完成的最后一个交易序号S1,其中交易序号是指数据库接收应用写入交易的先后序号顺序,在不同数据库中有不同的获取方式,如Oracle数据库是在redolog中获取、MySQL是在binlog中获取,但实质意义是一样的;获取t1时刻目标端数据库全量数据CRC校验值;获取t1时刻目标端全量数据完成的最后一个交易序号S1’;对比t1时刻源端数据库和目标端数据库的全量数据;如果校验结果一致,说明在此期间没有数据同步延时,数据校验完毕;如果校验结果不一致,则根据全量数据校验结果:获取t1时刻不一致数据在源端数据库对应的数据集(t1,a1),获取t1时刻不一致数据在目标端数据库对应的数据集(t1,b1);为了不影响数据同步环境中的正式系统,需要把目标端数据库的b1数据集传输、装载到验证服务器中生成数据集(t1,b1’);根据源端数据库日志分析模块,获取源端数据库交易序号S1和交易序号S1’之间的所有交易集合(S1’,S1);参见图3所示的差量交易集示意图,把交易集合(S1’,S1)在数据验证服务器的b1’上执行,完成后得到数据集(t1,b2);参见图4所示的差量交易产生原因示意图,对比(t1,a1)和(t1,b2)两个数据集;如果(t1,a1)和(t1,b2)比对结果一致,则完成了全量和增量数据比对交验;如果(t1,a1)和(t1,b2)比对结果不一致,则需要依据a1在源端数据库对应的数据集内容,对b1在目标端数据库对应的数据集进行数据修复工作。
在本发明实施例中,需要说明的是,本发明实施例相对于快照比对法,如快照比对法进行比对就是在某一时刻对两端数据库中数据进行一次“照相”,生成两个描述数据库中数据的瞬时状态的静态文件,然后对两个快照进行比对校验,这种方法对于相同数据库种类和版本的场景比较适合,但对于异构数据库的比对和校验则不太适用,这是因为异构数据库的存储方式、数据类型的表现方式都有可能是不同的,这就造成了无论数据是否一致,都会存在快照的差异,而本实施例是对数据内容进行CRC进行校验,屏蔽了数据库种类和数据库版本的差异,适用范围更广;本发明实施例相对于日志比对法,如日志比对法就是通过分析数据库日志信息来捕获复制对象的变化,然后通比对两端数据库的日志变化信息来比对校验数据的一致性,这种比对方法的缺陷跟快照比对法类似,只适用于同构数据同步的数据对比,即数据库种类和版本的不同,会导致日志本身和日志分析结果存在差异,而本实施例是利用CRC校验和差量数据补全的方法进行数据比对校验,适用于同构数据库和异构数据库的全量和增量比对;本发明实施例相对于控制表比对法,如控制表比对法是为每个要同步的源表创建一个控制表,控制表只包括源表的主键字段和一些控制信息字段(更新时间、更新类型等),当源表中的某条记录发生变化时,同时添加或修改控制表相应的主键记录和时间信息,之后回查两端数据库对应更新的内容进行数据比对和校验,这种比对方法主要缺陷是对源端数据库和目标端数据库进行频繁的数据查询,会占用大量的计算资源,系统繁忙时会影响正常业务的运行,而本实施例是只需获取一次全量数据CRC校验和一次差量数据CRC校验,极大地降低了对源端数据库和目标端数据库的资源消耗,其中差量数据补全是在比对校验服务器中进行,更不会占用生产系统的资源;本发明实施例相对于时间戳法,如时间戳法是需要相关应用系统中的每个表中都有一个时间戳字段,以记录每个表的修改时间,然后根据不同时间段和时间点获取的数据进行数据比对校验,该方案的主要缺陷是需要多次获取源端和目标端的全量数据和增量数据,才能完成一次同步数据比对校验工作,流程环节过多,效率低下,对源端数据库和目标端数据库的I/O资源、计算资源占用都比较大,而本实施例是通过差量交易补全的方法,一次获取全量数据CRC校验码和差量交易信息就可以完成数据比对校验,并保证数据校验的收敛性和完整性;本发明实施例相对于控制表和时间戳相结合的比对方法,控制表和时间戳相结合的比对方法是在数据同步过程中,基于控制表(创建临时表保存数据变更信息)和时间戳相结合的方式实现同步增量数据校验的方法,该方法同样继承了控表法和时间戳法的比对校验流程过长、对系统资源占用过高的缺陷,而本实施例是通过差量交易补全的方法,一次获取全量数据CRC校验码和差量交易信息就可以完成数据比对校验,并保证数据校验的收敛性和完整性。可见,本发明实施例提供的数据同步中的数据比对校验及数据修复的方法,能够做到不一致数据的精准修复,而且在修复的过程中不影响其它正常数据的同步功能,也即,本发明实施例适用于静态数据比对场景、动态数据比对场景、同构数据同步场景、异构数据同步场景、全量数据比对校验场景、部分数据表的单独比对校验场景,实用性非常广泛;本发明实施例针对不一致的数据集采用了差量数据补全的方法,来进行增量数据比对,缩短了整个数据比对校验的流程,大大降低了对源端数据库和目标端数据库的资源占用和性能影响;无论是全量数据校验,还是增量数据交验,都需要通过内容的校验码来实现,传统做法是根据主键ID、时间戳等信息进行数据比对校验的,而在本实施例中,对于有主键的表,则以主键ID和时间戳生成CRC校验码,对于无主键表,则以数据表的列为单位生成CRC列校验码,并能够对不同数据集的校验码进行比对,这样就完全覆盖了有主键表和无主键表的数据比对校验范围。
由上面技术方案可知,本发明实施例提供的数据同步中的数据比对校验及数据修复的方法,通过获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对所述源端数据库中的差异数据集和所述第二数据集进行对比;若对比结果不一致,则对不一致的数据集进行数据修复,从而完成数据同步中的数据比对校验及数据修复,本发明实施例适用于静态数据比对场景、动态数据比对场景、同构数据同步场景、异构数据同步场景、全量数据比对校验场景及单独比对校验场景,实用性非常广泛。
在上述实施例的基础上,在本实施例中,还包括:
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比,若对比结果一致,则校验结束。
在上述实施例的基础上,在本实施例中,所述若对比结果不一致,则对不一致的数据集进行数据修复,包括:
在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中;
清空所述目标端数据库中的差异数据集在t2时刻对应的数据集;
基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
在本实施例中,举例来说,参见图5,t2时刻,获取a1在源端数据库中时对应的数据集(t2,a1);把(t2,a1)数据集传数据到目标端数据库的缓存(即在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中);清空目标端数据库b1在t2时刻对应的数据集,即清空所述目标端数据库中的差异数据集在t2时刻对应的数据集,需要说明的是,清空是指清空表的内容,要保留数据表结构;把目标端数据库缓存中的(t2,a1)加载到已清空的数据集中,生成(t2,b1)完成对不一致的数据集修复,即基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
由上面技术方案可知,本发明实施例提供的数据同步中的数据比对校验及数据修复的方法,在修复过程中不影响数据库中其它数据集的同步、能够针对不一致的数据集进行定点修复,而不需要进行全库修复或者全数据集修复。
在上述实施例的基础上,在本实施例中,所述基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复,包括:
t2时刻,对所述源端数据库中的差异数据集在t2时刻对应的数据集进行操作日志分析,确定与所述源端数据库中的差异数据集在t2时刻对应的数据集对应的增量;
基于所述增量,在生成第三数据集后完成对不一致的数据集修复。
在本实施例中,举例来说,如t2时刻,交易日志分析装置启动针对(t2,a1)数据集的操作日志分析,并把分析结果持续的发送到到目标端数据库;在目标端数据库把收到的针对(t2,a1)的增量交易放入缓存区,在生成(t2,b1)数据集后,把缓存中的交易持续的加载到数据库库中,从而完成了不一致数据集的精准修复,这个过程不影响其它校验通过数据集的数据同步工作。
由上面技术方案可知,本发明实施例提供的数据同步中的数据比对校验及数据修复的方法,有两个特点,第一是具备定点、小范围数据修复的能力,第二是数据修复过程中不影响正常数据的同步功能。
图6为本发明一实施例提供的数据同步中的数据比对校验及数据修复的装置的结构示意图,如图6所示,该装置包括:第一获取模块201、第二获取模块202、第一对比模块203、第一生成模块204、第三获取模块205、第二生成模块206、第二对比模块207和修复模块208,其中:
其中,第一获取模块201,用于获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第二获取模块202,用于获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第一对比模块203,用于对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;
第一生成模块204,用于若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;
第三获取模块205,用于基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;
第二生成模块206,用于基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
第二对比模块207,用于对所述源端数据库中的差异数据集和所述第二数据集进行对比;
修复模块208,用于若对比结果不一致,则对不一致的数据集进行数据修复。
在上述实施例基础上,优选的还包括:全量数据获取模块,用于获取某一时刻、某一数据集的全量数据;CRC生成和校验模块,用于对某一数据集生成CRC校验码,对于有主键的表,则以主键ID和时间戳生成CRC校验码,对于无主键表,则以数据表的列为单位生成CRC列校验码,并能够对不同数据集的校验码就行比对;数据库日志分析模块,用户分析源端数据库在线日志(如Oracle的redolog、MySQL的binlog等),并获取sql交易、交易序号、交易时间等信息,参见图7所示的日志分析与交易合成示意图;交易装载模块,能够把源端数据库分析得到的sql交易数据,按照交易序号顺序,对目标端数据库或某些数据表的集合进行数据加载的装置;交易装载模块,能够把源端数据库分析得到的sql交易数据,按照交易序号顺序,对目标端数据库或某些数据表的集合进行数据加载的装置;数据清空模块,通过清空指定数据集表的数据内容,保留数据表结构;数据加载模块,把全量数据获取模块获取的数据装载到制定的表结构中;数据库日志分析模块,用户分析源端数据库在线日志(如Oracle的redolog、MySQL的binlog等),并获取sql交易、交易序号、交易时间等信息。
本发明实施例提供的数据同步中的数据比对校验及数据修复的装置具体可以用于执行上述实施例的数据同步中的数据比对校验及数据修复的方法,其技术原理和有益效果类似,具体可参见上述实施例,此处不再赘述。
基于相同的发明构思,本发明实施例提供一种电子设备,参见图8,电子设备具体包括如下内容:处理器301、通信接口303、存储器302和通信总线304;
其中,处理器301、通信接口303、存储器302通过通信总线304完成相互间的通信;通信接口303用于实现各建模软件及智能制造装备模块库等相关设备之间的信息传输;处理器301用于调用存储器302中的计算机程序,处理器执行计算机程序时实现上述各方法实施例所提供的方法,例如,处理器执行计算机程序时实现下述步骤:获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对所述源端数据库中的差异数据集和所述第二数据集进行对比;若对比结果不一致,则对不一致的数据集进行数据修复。
基于相同的发明构思,本发明又一实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法实施例提供的方法,例如,获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;对所述源端数据库中的差异数据集和所述第二数据集进行对比;若对比结果不一致,则对不一致的数据集进行数据修复。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
此外,在本发明中,诸如“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种数据同步中的数据比对校验及数据修复的方法,其特征在于,包括:
获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;
若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;
基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;
基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
对所述源端数据库中的差异数据集和所述第二数据集进行对比;
若对比结果不一致,则对不一致的数据集进行数据修复。
2.根据权利要求1所述的数据同步中的数据比对校验及数据修复的方法,其特征在于,还包括:
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比,若对比结果一致,则校验结束。
3.根据权利要求1所述的数据同步中的数据比对校验及数据修复的方法,其特征在于,所述若对比结果不一致,则对不一致的数据集进行数据修复,包括:
在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中;
清空所述目标端数据库中的差异数据集在t2时刻对应的数据集;
基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
4.根据权利要求3所述的数据同步中的数据比对校验及数据修复的方法,其特征在于,所述基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复,包括:
t2时刻,对所述源端数据库中的差异数据集在t2时刻对应的数据集进行操作日志分析,确定与所述源端数据库中的差异数据集在t2时刻对应的数据集对应的增量;
基于所述增量,在生成第三数据集后完成对不一致的数据集修复。
5.一种数据同步中的数据比对校验及数据修复的装置,其特征在于,包括:
第一获取模块,用于获取源端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第二获取模块,用于获取目标端数据库t1时刻的全量数据CRC校验码和交易队列中末尾的交易序号;
第一对比模块,用于对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比;
第一生成模块,用于若对比结果不一致,则确定源端数据库中的差异数据集和目标端数据库中的差异数据集,并基于所述目标端数据库中的差异数据集生成第一数据集;
第三获取模块,用于基于与源端数据库t1时刻对应的所述交易队列中末尾的交易序号,和,与目标端数据库t1时刻对应的所述交易队列中末尾的交易序号,获取所述目标端数据库中的差异数据集未执行的交易命令集合;
第二生成模块,用于基于所述目标端数据库中的差异数据集未执行的交易命令集合在所述目标端数据库中的差异数据集生成第一数据集上执行生成第二数据集;
第二对比模块,用于对所述源端数据库中的差异数据集和所述第二数据集进行对比;
修复模块,用于若对比结果不一致,则对不一致的数据集进行数据修复。
6.根据权利要求5所述的数据同步中的数据比对校验及数据修复的装置,其特征在于,第一对比模块,还用于:
对所述源端数据库t1时刻的全量数据CRC校验码和所述目标端数据库t1时刻的全量数据CRC校验码进行对比,若对比结果一致,则校验结束。
7.根据权利要求5所述的数据同步中的数据比对校验及数据修复的装置,其特征在于,所述修复模块,具体用于:
在源端数据库获取所述源端数据库中的差异数据集在t2时刻对应的数据集,并将所述源端数据库中的差异数据集在t2时刻对应的数据集传到目标端数据库的缓存中;
清空所述目标端数据库中的差异数据集在t2时刻对应的数据集;
基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复。
8.根据权利要求7所述的数据同步中的数据比对校验及数据修复的装置,其特征在于,所述修复模块在执行所述基于目标端数据库缓存中的所述源端数据库中的差异数据集在t2时刻对应的数据集加载到已清空的数据集中,生成第三数据集完成对不一致的数据集修复时,包括:
t2时刻,对所述源端数据库中的差异数据集在t2时刻对应的数据集进行操作日志分析,确定与所述源端数据库中的差异数据集在t2时刻对应的数据集对应的增量;
基于所述增量,在生成第三数据集后完成对不一致的数据集修复。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~4任一项所述的数据同步中的数据比对校验及数据修复的方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1~4任一项所述的数据同步中的数据比对校验及数据修复的方法。
CN202110546602.7A 2021-05-19 2021-05-19 数据同步中的数据比对校验及数据修复的方法及装置 Pending CN115373889A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110546602.7A CN115373889A (zh) 2021-05-19 2021-05-19 数据同步中的数据比对校验及数据修复的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110546602.7A CN115373889A (zh) 2021-05-19 2021-05-19 数据同步中的数据比对校验及数据修复的方法及装置

Publications (1)

Publication Number Publication Date
CN115373889A true CN115373889A (zh) 2022-11-22

Family

ID=84059315

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110546602.7A Pending CN115373889A (zh) 2021-05-19 2021-05-19 数据同步中的数据比对校验及数据修复的方法及装置

Country Status (1)

Country Link
CN (1) CN115373889A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436836A (zh) * 2023-06-13 2023-07-14 阿里巴巴(中国)有限公司 域名数据同步检测方法、装置及设备
CN117194390A (zh) * 2023-11-08 2023-12-08 建信金融科技有限责任公司 数据库迁移方法和装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116436836A (zh) * 2023-06-13 2023-07-14 阿里巴巴(中国)有限公司 域名数据同步检测方法、装置及设备
CN116436836B (zh) * 2023-06-13 2023-09-01 阿里巴巴(中国)有限公司 域名数据同步检测方法、装置及设备
CN117194390A (zh) * 2023-11-08 2023-12-08 建信金融科技有限责任公司 数据库迁移方法和装置
CN117194390B (zh) * 2023-11-08 2024-02-09 建信金融科技有限责任公司 数据库迁移方法和装置

Similar Documents

Publication Publication Date Title
US10754875B2 (en) Copying data changes to a target database
CN107391628B (zh) 数据同步方法及装置
US8078582B2 (en) Data change ordering in multi-log based replication
US10191932B2 (en) Dependency-aware transaction batching for data replication
CN111259004B (zh) 一种存储引擎中数据索引的方法以及相关装置
CN113297320A (zh) 分布式数据库系统及数据处理方法
EP3671437A1 (en) Data pipeline branching
CN115373889A (zh) 数据同步中的数据比对校验及数据修复的方法及装置
CN107506260A (zh) 一种动态分块数据库增量备份方法
US8935207B2 (en) Inspecting replicated data
CN111930850A (zh) 数据校验方法、装置、计算机设备和存储介质
US11188228B1 (en) Graphing transaction operations for transaction compliance analysis
CN114579559A (zh) 数据同步方法及装置、计算机设备、存储介质
WO2023124242A1 (zh) 事务执行方法、装置、设备和存储介质
JP2023546818A (ja) データベースシステムのトランザクション処理方法、装置、電子機器、及びコンピュータプログラム
CN109710698A (zh) 一种数据汇聚方法、装置、电子设备及介质
CN111427902B (zh) 基于轻量型数据库的元数据管理方法、装置、设备及介质
CN113568892A (zh) 一种基于内存计算对数据源进行数据查询的方法和设备
CN113672556A (zh) 一种批量文件的迁移方法及装置
CN116881371B (zh) 数据同步方法、装置、设备及存储介质
Chao et al. Incremental local data backup system based on bacula
CN111611245B (zh) 处理数据表的方法和系统
CN112069067B (zh) 基于区块链的数据测试方法、装置及计算机可读存储介质
CN118170746A (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