CN116340430A - 一种数据同步校验方法及相关设备 - Google Patents
一种数据同步校验方法及相关设备 Download PDFInfo
- Publication number
- CN116340430A CN116340430A CN202310595511.1A CN202310595511A CN116340430A CN 116340430 A CN116340430 A CN 116340430A CN 202310595511 A CN202310595511 A CN 202310595511A CN 116340430 A CN116340430 A CN 116340430A
- Authority
- CN
- China
- Prior art keywords
- target
- database
- operation record
- source
- data
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Abstract
本说明书提供了一种数据同步校验方法及相关设备。该方法包括:分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
Description
技术领域
本说明书一个或多个实施例涉及数据处理技术领域,尤其涉及一种数据同步校验方法及相关设备。
背景技术
在源端数据库向目标端数据库同步增量数据的过程中,为了保证源端数据库与目标端数据库之间数据同步的准确性,往往需要对源端数据库与目标端数据库之间同步的增量数据进行一致性校验。对于有主键的数据,可以直接基于主键这一唯一标识,校验源端数据库与目标端数据库中具有相同主键的增量数据是否一致。但是,对于无主键的数据,由于没有了对数据的唯一标识,导致在进行数据同步校验时无法明确双方数据库中需要进行对比的增量数据,进而无法全面、可靠地实现数据同步校验。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据同步校验方法及相关设备。
第一方面,本说明书提供了一种数据同步校验方法,所述方法包括:
分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;
确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;
如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;
基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
第二方面,本说明书提供了一种数据同步校验装置,所述装置包括:
获取单元,用于分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;
确定单元,用于确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;
第一比对单元,用于如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;
第一校验单元,用于基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面所述的数据同步校验方法。
相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面所述的数据同步校验方法。
综上所述,在源端数据库向目标端数据库同步增量数据的过程中,本申请可以分别采集并解析源端数据库和目标端数据库中产生的事务日志,以分别获取针对源端数据库的源端操作记录和针对目标端数据库的目标端操作记录。进一步地,当源端数据库和目标端数据库中的数据均为无主键数据时,本申请可以直接对比获取到的与具备相同事务标识的同一个事务相关的源端操作记录和目标端操作记录,相当于对比源端数据库和目标端数据库中执行的同一个事务中的所有操作是否相同,进而校验源端数据库和目标端数据库之间同步的增量数据的一致性。如此,本申请对于无主键数据,可以直接以双方数据库中具备相同事务标识的同一个事务为校验标准,通过对比源端数据库和目标端数据库中同一个事务对应的各个操作记录是否相同,实现对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。本申请有效解决了无主键数据无法进行数据同步校验的问题,全面、可靠地满足了实际应用中的数据同步校验需求。
附图说明
图1是一示例性实施例提供的一种系统架构示意图;
图2是一示例性实施例提供的一种数据同步校验方法的流程示意图;
图3是一示例性实施例提供的一种事务执行过程的示意图;
图4是一示例性实施例提供的一种数据同步过程的示意图;
图5是一示例性实施例提供的另一种数据同步校验方法的流程示意图;
图6是一示例性实施例提供的一种基于主键的数据同步校验示意图;
图7是一示例性实施例提供的另一种基于主键的数据同步校验示意图;
图8是一示例性实施例提供的一种数据同步校验装置的结构示意图;
图9是一示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
此外,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书中的部分用语进行解释说明,以便于本邻域技术人员理解。
(1)数据同步:是指将源端数据库中的数据同步至目标端数据库中,使得目标端数据库中的数据与源端数据库中的数据保持一致。一般情况下,数据同步可以包括全量数据的数据同步以及增量数据的数据同步。其中,全量数据的数据同步,是指在对源端数据库停止操作的情况下,将源端数据库中当前所有的数据(即全量数据)同步至目标端数据库中。其中,增量数据的数据同步,是指在保持对源端数据库的操作的情况下,即在源端数据库中的数据不断产生变更的过程中,将源端数据库中产生变更的数据(即增量数据)实时同步至目标端数据库中。
需要说明的是,增量数据同步的过程实际上是对相应的数据库事务的复制过程,若可以将源端数据库中每一个已提交的事务均准确、完整地复制到目标端数据库中,使得目标数据库执行与源端数据库相同的数据操作,进而产生相同的数据变更,则可以实现将源端数据库中的增量数据准确同步至目标端数据库中。
进一步地,为了保证源端数据库与目标端数据库之间数据同步的准确性,需要进行数据同步校验,即对源端数据库与目标端数据库之间同步的增量数据进行一致性校验。在常规方案中,对于有主键数据,可以直接基于主键这一唯一标识,校验源端数据库与目标端数据库中具有相同主键的增量数据是否一致。但是,对于无主键数据,由于没有了对数据的唯一标识,导致在进行数据同步校验时无法明确双方数据库中需要进行对比的增量数据,进而无法全面、可靠地实现数据同步校验,无法满足实际的应用需求。
基于此,本说明书提供了一种技术方案,对于无主键数据,可以直接对比源端数据库和目标端数据库中同一个事务对应的各个操作记录是否相同,进而实现对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在实现时,本申请可以分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对源端数据库的源端操作记录以及针对目标端数据库的目标端操作记录。然后,确定源端数据库和目标端数据库中存储的数据的数据类型。如果源端数据库和目标端数据库中存储的数据的数据类型为无主键数据,本申请可以进一步确定源端数据库和目标端数据库中具有相同事务标识的目标事务,并针对获取到的与该目标事务相关的源端操作记录以及目标端操作记录进行比对处理。最后,基于上述比对结果可以对源端数据库和所标端数据库之间同步的增量数据进行一致性校验。
在以上技术方案中,在源端数据库向目标端数据库同步增量数据的过程中,本申请可以分别采集并解析源端数据库和目标端数据库中产生的事务日志,以分别获取针对源端数据库的源端操作记录和针对目标端数据库的目标端操作记录。进一步地,当源端数据库和目标端数据库中的数据均为无主键数据时,本申请可以直接对比获取到的与具备相同事务标识的同一个事务相关的源端操作记录和目标端操作记录,相当于对比源端数据库和目标端数据库中执行的同一个事务中的所有操作是否相同,进而校验源端数据库和目标端数据库之间同步的增量数据的一致性。如此,本申请考虑到增量数据的同步过程实际上就是事务的复制过程,从而对于无主键数据,可以直接以双方数据库中具备相同事务标识的同一个事务为校验标准,通过对比源端数据库和目标端数据库中同一个事务对应的各个操作记录是否相同,实现对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。本申请有效解决了无主键数据无法进行数据同步校验的问题,进而全面、可靠地满足了实际应用中的数据同步校验需求。
请参阅图1,图1是一示例性实施例提供的一种系统架构示意图。本说明书提供的一个或多个实施例可以在图1所示的系统架构或者类似的系统架构中具体实施。如图1所示,该系统可以包括源端数据库、目标端数据库和数据同步校验方。在一示出的实施方式中,源端数据库、目标端数据库和数据同步校验方之间可以通过有线或者无线的方式建立通信连接,本说明书对此不做具体限定。
如图1所示,源端数据库可以向目标端数据库进行数据同步。在一示出的实施方式中,源端数据库可以向目标端数据库进行增量数据的数据同步。
在一示出的实施方式中,在源端数据库向目标端数据库进行增量数据的数据同步的过程中,数据同步校验方可以实时采集源端数据库和目标端数据库中产生的事务日志。其中,源端数据库中产生的事务日志可以用于记录源端数据库执行的事务中的各个操作对源端数据库进行的更改。其中,目标端数据库中产生的事务日志可以用于记录目标端数据库执行的事务中的各个操作对目标端数据库进行的更改。
进一步地,在一示出的实施方式中,数据同步校验方在采集到源端数据库和目标端数据库中产生的事务日志后,可以实时解析事务日志,从而获取到针对源端数据库的源端操作记录和针对目标端数据库的目标端操作记录。在一示出的实施方式中,源端操作记录和目标端操作记录中可以包括相应的数据库名称、数据表名称、操作类型(例如insert、delete或者update)和被操作的值(例如要插入的值、要删除的值或者更新前后的值等),等等,本说明书对此不做具体限定。在一些可能的实施方式中,源端操作记录和目标端操作记录中还可以包括该操作所属事务的事务标识(例如事务ID)、该操作针对的数据记录的主键信息,等等,本说明书对此不做具体限定。
在一示出的实施方式中,数据同步校验方可以基于获取到的源端操作记录和目标端操作记录,对源端数据库和目标端数据库之间同步的增量数据进行一致性校验,以确定在增量数据的数据同步过程中,目标端数据库中是否产生了与源端数据库相同的增量数据,从而保障源端数据库和目标端数据库之间数据同步的准确性。
在一示出的实施方式中,数据同步校验方可以先确定源端数据库和目标端数据库中存储的数据的数据类型,并基于确定的数据类型选择不同的数据同步校验方式。
在一示出的实施方式中,数据同步校验方可以先确定源端数据库和目标端数据库中的数据是有主键数据,还是无主键数据,并基于不同的结果选择不同的数据同步校验方式。
在一示出的实施方式中,如果数据同步校验方确定源端数据库和目标端数据库中的数据是无主键数据,数据同步校验方可以对比源端数据库和目标端数据库中具备相同事务标识的同一事务(例如目标事务)对应的操作记录是否相同,以校验数据同步的准确性。示例性的,数据同步校验方可以对比获取到的与该目标事务相关的源端操作记录和目标端操作记录是否相同。
可以理解的是,一个事务通常包含对数据库的多个数据操作,因此,与该事务相关的操作记录往往也有多条。
在一示出的实施方式中,如果与该目标事务相关的多条源端操作记录和多条目标端操作记录均一一相同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的,即源端数据库和目标端数据库之间的数据同步是准确的,没有错漏的。
示例性的,数据同步校验方获取到的与目标事务相关的源端操作记录中包括1条insert操作记录和4条update操作记录,相应的,与该目标事务相关的目标端端操作记录中也包括1条insert操作记录和4条update操作记录,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的。
在一示出的实施方式中,如果与该目标事务相关的多条源端操作记录和多条目标端操作记录不同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致。
示例性的,数据同步校验方获取到的与目标事务相关的源端操作记录中包括1条insert操作记录和4条update操作记录,而与目标事务相关的目标端操作记录只有1条insert操作记录和3条update操作记录,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致,目标端数据库在同步过程中遗漏了部分增量数据(例如遗漏了一次update操作)。
示例性的,数据同步校验方获取到的与目标事务相关的源端操作记录中包括1条insert操作记录和4条update操作记录,而与目标事务相关的目标端操作记录中包括1条insert操作记录和5条update操作记录,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致,目标端数据库在同步过程中多余地变更了部分数据(例如多余增加了一次update操作)。
示例性的,数据同步校验方获取到的与目标事务相关的源端操作记录中包括1条insert操作记录和4条update操作记录,而与目标事务相关的目标端操作记录中包括1条delete操作记录和4条update操作记录,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致,目标端数据库在同步过程中错误地同步了部分增量数据(例如将insert操作错误地同步成了delete操作)。
在一示出的实施方式中,数据同步校验方在确定待比对的目标事务后,可以基于实时获取到的与该目标事务相关的源端操作记录和目标端操作记录,进行实时流式的数据同步校验,即获取到与该目标事务相关的一条源端操作记录和一条目标端操作,就可以比对一条源端操作记录和一条目标端操作记录,从而极大程度上提升了数据同步校验的效率。
在一示出的实施方式中,如果数据同步校验方确定源端数据库和目标端数据库中的数据是有主键数据,数据同步校验方可以直接按照预设的时长周期(例如1分钟、5分钟或者10分钟等),周期性地对比源端数据库和目标端数据库中具有同一主键(例如目标主键)的数据记录是否相同,以校验数据同步的准确性。
示例性的,如果源端数据库和目标端数据库中具有目标主键(例如目标员工的员工编号)的源端数据记录和目标端数据记录中的所有字段(例如包括员工姓名、员工工龄等)均相同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的。
在一示出的实施方式中,如果数据同步校验方确定源端数据库和目标端数据库中的数据是有主键数据,数据同步校验方也可以实时对比获取到的与同一主键(例如目标主键)相关的源端操作记录和目标端操作记录是否相同,以高效、实时地校验数据同步的准确性。
在一示出的实施方式中,如果与该目标主键相关的源端操作记录和目标端操作记录相同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的,具体请参考下述实施例的描述,此处不再进行赘述。
如上所述,本申请对于无主键数据,可以通过比对源端数据库和目标端数据库中同一事务对应的各个操作记录是否相同,来校验源端数据库与目标端数据库之间数据同步的准确性,有效解决无主键数据无法进行准确的数据同步校验的问题。进一步地,对于有主键数据,除了一一对比具有相同主键的数据记录中的每个字段是否相同外,还可以通过对比针对相同主键的源端操作记录和目标端操作记录是否相同,来校验源端数据库与目标端数据库之间数据同步的准确性,从而实现更加实时、高效的数据同步校验。
需要说明的是,本说明书对数据同步校验方的具体形态不做具体限定。
在一示出的实施方式中,该数据同步校验方可以是具备上述功能的计算机设备,例如包括智能手机、平板电脑、笔记本电脑、台式电脑、车载计算机、服务器、由多台服务器构成的服务器集群或者云计算服务中心,等等,本说明书对此不做具体限定。在一示出的实施方式中,该数据同步校验方也可以是计算机设备中的具备上述功能的部分功能模块或者运行的程序,等等,本说明书对此不做具体限定。在一示出的实施方式中,该数据同步校验方也可以是一个独立的第三方数据校验平台,或者,该数据同步校验方还可以是集成在数据同步工具中的部分功能模块,用于在数据同步过程中对同步的增量数据进行实时的一致性校验,等等,本说明书对此不做具体限定。
需要说明的是,本说明书对源端数据库和目标端数据库的具体类型不做具体限定。
在一示出的实施方式中,上述源端数据库和目标端数据库可以是关系型数据库,例如Oracle数据库、mySQL数据库、PostgreSQL数据库,等等,本说明书对此不做具体限定。
请参阅图2,图2是一示例性实施例提供的一种数据同步校验方法的流程示意图。该方法可以应用于如图1所示的系统架构中或者类似的系统架构中,具体地,该方法可以应用于如图1所示的数据同步校验方。如图2所示,该方法具体可以包括如下步骤S101-步骤S104。
步骤S101,分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录。
在一示出的实施方式中,源端数据库可以向目标端数据库进行增量数据的数据同步。
在一示出的实施方式中,在源端数据库执行事务的过程中,可以将源端数据库中已提交的事务复制到目标数据库中,使得目标端数据库同步执行与源端数据库相同的事务,以实现源端数据库与目标端数据库之间增量数据的数据同步。
在一示出的实施方式中,在上述数据同步过程中,数据同步校验方可以分别从源端数据库和目标端数据库中采集其执行事务所产生的一系列事务日志。在一示出的实施方式中,数据同步校验方可以通过启用两个用于采集事务日志的进程,以并行的采集源端数据库和目标端数据库中的事务日志,等等,本说明书对此不做具体限定。
在一示出的实施方式中,数据同步校验方可以将采集到的事务日志存储至相应的存储空间中。示例性的,数据同步校验方可以将采集到的事务日志存储至数据同步校验方的内存中,等等,本说明书对此不做具体限定。
进一步地,在一示出的实施方式中,数据同步校验方在分别从源端数据库和目标端数据库中采集到对应的事务日志后,可以进一步对采集到的事务日志进行解析,以分别获取针对源端数据库的源端操作记录以及针对目标端数据库的目标端操作记录。
在一示出的实施方式中,源端操作记录和目标端操作记录中可以包括相应的数据库名称、数据表名称、操作类型(例如insert、delete或者update)和被操作的值(例如要插入的值、要删除的值或者更新前后的值等),等等,本说明书对此不做具体限定。在一些可能的实施方式中,源端操作记录和目标端操作记录中还可以包括该操作所属事务的事务标识(例如事务ID)、该操作针对的数据记录的主键信息(例如员工编号或者学生的学号等),等等,本说明书对此不做具体限定。
步骤S102,确定所述源端数据库和所述目标端数据库中存储的数据的数据类型。
在一示出的实施方式中,数据同步校验方可以基于获取到的源端操作记录和目标端操作记录,对源端数据库和目标端数据库之间同步的增量数据进行一致性校验,以验证源端数据库和目标端数据库之间数据同步的准确性。
在一示出的实施方式中,数据同步校验方在对源端数据库和目标端数据库之间同步的增量数据进行一致性校验之前,可以先确定源端数据库和目标端数据库中存储的数据的数据类型,并基于确定的数据类型,进一步确定相应的数据同步校验方式。
在一示出的实施方式中,数据同步校验方可以先确定源端数据库和目标端数据库中的数据是有主键数据,还是无主键数据,并基于不同的结果选择不同数据同步校验方式。
需要说明的是,本说明书对数据同步校验方确定源端数据库和目标端数据库中的数据是有主键数据,还是无主键数据的方式不做具体限定。
在一示出的实施方式中,数据同步校验方可以根据获取到的源端操作记录和目标端操作记录中是否包含主键信息,来确定源端数据库和目标端数据库中的数据是有主键数据,还是无主键数据。示例性的,如果数据同步校验方获取到的源端操作记录和目标端操作记录中包含主键信息,则数据同步校验方可以确定源端数据库和目标端数据库中的数据是有主键数据。示例性的,如果数据同步校验方获取到的源端操作记录和目标端操作记录中不包含主键信息,则数据同步校验方可以确定源端数据库和目标端数据库中的数据是无主键数据。
在一示出的实施方式中,在数据同步校验方与源端数据库和目标端数据库建立通信连接之后,源端数据库和目标端数据库可以向数据同步校验发送相关的数据库配置信息,通过该数据库配置信息向数据同步校验方指示源端数据库和目标端数据中的数据的数据类型。示例性的,该数据库配置信息中可以包含数据库中的数据的数据类型,数据库名称、数据库中的各个数据表的名称,等等,本说明书对此不做具体限定。
在一些可能的实施方式中,数据同步校验方还可以通过除了上述方式外的其他任何可能的方式确定源端数据库和目标端数据库中的数据的数据类型,本说明书对此不做具体限定。
步骤S103,如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理。
在一示出的实施方式中,如果数据同步校验方确定源端数据库和目标端数据库中存储的数据为无主键数据,数据同步校验方可以通过对比源端数据库和目标端数据库中同一事务(例如目标事务)对应的操作记录是否相同,来校验数据同步的准确性。示例性的,数据同步校验方可以通过对比获取到的与该目标事务相关的源端操作记录和目标端操作记录是否相同,来校验数据同步的准确性。
需要说明的是,理想情况下,如果源端数据库中已提交的事务是串行复制到目标端数据库中的,那么数据同步校验方只需要在双方数据库中定位一个相同的起始点,顺序的往后对比各个事务的操作记录是否一致就行了。示例性的,源端数据库中依次执行了事务1、事务2、事务3和事务4,并依次复制到了目标端数据库,则目标端数据库也会依次执行事务1、事务2、事务3和事务4。如此,源端数据库和目标端数据库中的各个事务可以按照执行顺序很好的对应起来,数据同步校验方可以通过顺序地比对源端数据库和目标端数据库中依次执行的各个事务的操作记录是否相同,简单、便捷地校验数据同步的准确性。
然而,在一些可能的实施方式中,实际的事务复制过程并非如此理想。请参阅图3,图3是一示例性实施例提供的一种事务执行过程的示意图。如图3所示,在实际的数据同步过程中,源端数据库中的事务不是串行复制到目标端数据库中的,而是在解析各个事务之间依赖后并行复制到目标端数据库中,这就导致了源端数据库中的事务执行顺序和目标端数据库中的事务执行顺序不一致。如图3所示,源端数据库中依次执行了事务1、事务2、事务3和事务4,但是目标端数据库中却是按照事务2、事务1、事务4和事务3的顺序依次执行。如此,无法通过上述简单的执行顺序比对,实现在源端数据库和目标端数据库中确定一个相同的事务。
基于此,本申请可以基于事务的事务标识(例如事务ID),将源端数据库中的事务与目标端数据库中的事务一一对应,以便准确地比对与同一事务相关的源端操作记录和目标端操作记录,从而实现可靠、准确地数据同步校验。
在一示出的实施方式中,如果源端数据库和目标端数据库中存储的数据的数据类型为无主键数据,则数据同步校验方可以确定源端数据库和目标端数据库中具有相同事务标识的目标事务,并针对获取到的与该目标事务相关的源端操作记录以及目标端操作记录进行比对处理。
在一示出的实施方式中,数据同步校验方可以先确定获取到的源端操作记录中是否包含事务标识。如果源端操作记录中包含事务标识,则进一步确定获取到的目标端操作记录中是否存在包含相同的该事务标识的目标端操作记录。如果存在包含相同的该事务标识的目标端操作记录,数据同步校验方可以将该事务标识对应的事务确定为待比对的目标事务。
需要说明的是,与目标事务相关的多条源端操作记录中,并非每条源端操作记录都会包含该事务的事务标识,往往只有源端的begin(开始)操作记录会包含该事务的事务标识。当数据同步校验方获取到该源端的begin操作记录后,可以进一步获取该源端的begin操作记录中包含的事务标识,再进一步从获取到的目标端操作记录中确定是否存在包含相同事务标识的目标端操作记录。
在一示出的实施方式中,在源端数据库执行该目标事务的过程中,数据同步校验方可以将与该目标事务相关的事务信息(例如包括事务标识)记录到与目标端数据库对应的事务表中。
在一示出的实施方式中,本申请可以先在目标端数据库中构建一个事务表。在后续的数据同步过程中,目标端数据库在提交该目标事务之前,可以在该事务表中插入该目标事务的事务标识,并生成与该事务标识的插入操作对应的事务日志。
在一示出的实施方式中,上述从获取到的目标端操作记录中确定是否存在包含相同事务标识的目标端操作记录,具体可以包括:从获取到的目标端操作记录中确定是否存在与该事务标识的插入操作对应的目标端操作记录;其中,与该事务标识的插入操作对应的目标端操作记录中包含该目标事务的事务标识。
如此,本申请通过构建事务表,并在数据同步过程中在事务表中插入同步事务的事务标识,明确了源端数据库和目标端数据库中的各个事务的对应关系,以便后续针对无主键数据可以基于具有相同事务标识的同一个事务进行可靠、准确地数据同步校验。
进一步地,请参阅图4,图4是一示例性实施例提供的一种数据同步过程的示意图。如图4所示,本申请可以在目标端数据库中创建一个事务表,该事务表可以用于记录源端数据库复制到目标端数据库中的各个事务的事务标识。
如图4所示,以上述目标事务是图4所示的事务1为例,源端数据库中的事务1可以包括begin 操作、操作1、操作2、操作3和commit(提交)操作。如图4所示,目标端数据库在提交事务1之前,可以先在事务表中插入该事务1的事务标识Txid-1,并生成与该事务标识Txid-1的插入操作对应的事务日志。示例性的,如图4所示,目标端数据库具体可以在事务1的begin操作之前,就先在事务表中插入该事务1的事务标识Txid-1,即将该事务标识Txid-1的插入操作作为目标端数据库中的事务1的第一个操作。如图4所示,该事务标识Txid-1的插入操作可以与原始的事物1一起构成一个完整的事务进行提交,以保证事务的原子性。
示例性的,如图4所示,数据同步校验方在获取到源端事务1的begin操作记录后,可以进一步获取该源端事务1的begin操作记录中包含的事务标识Txid-1。进一步地,例如在同步时延较小的情况下,数据同步校验方可以在较短的时间内(例如1秒内)从目标端数据库中获取与该事务标识Txid-1的插入操作对应的目标端操作记录,进而基于该目标端操作记录中包含的事务标识Txid-1,可以确定目标端数据库中与源端数据库具有相同事务标识Txid-1的事务1。后续,数据同步校验方可以针对获取到的与该事务1相关的源端操作记录和目标端操作记录进行比对处理。示例性的,如图4所示,数据同步校验方可以针对获取到与该事务1相关的源端操作记录1、源端操作记录2、源端操作记录3以及目标端操作记录1、目标端操作记录2、目标端操作记录3进行一一比对,以校验数据同步的准确性。
示例性的,如果在预设的时长内(例如1分钟或者5分钟等),数据同步校验方一直无法从目标端数据库中获取到与该事务标识Txid-1的插入操作对应的目标端操作记录,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致,并进一步确定目标端数据库在数据同步过程中遗漏了事务1。
步骤S104,基于比对结果对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,数据同步校验方可以基于上述与目标事务相关的源端操作记录和目标端操作记录之间的比对结果,对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,如果与目标事务相关的源端操作记录和目标端操作记录相同,数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的,即源端数据库和目标端数据库之间的数据同步是准确的,没有错漏的。
如上所述,一个事务通常包含对数据库的多个数据操作,因此,与该事务相关的操作记录往往也有多条。在一示出的实施方式中,如果与该目标事务相关的多条源端操作记录和多条目标端操作记录均一一相同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的,具体可参考上述图1对应实施例的描述,此处不再进行赘述。
进一步地,请参阅图5,图5是一示例性实施例提供的另一种数据同步校验方法的流程示意图。该方法可以应用于如图1所示的系统架构中或者类似的系统架构中,具体地,该方法可以应用于如图1所示的数据同步校验方。如图5所示,该方法具体可以包括如下步骤S201-步骤S208。
步骤S201,分别从源端数据库和目标端数据库中采集事务日志。
在一示出的实施方式中,在源端数据库向目标端数据库进行增量数据的数据同步过程中,数据同步校验方可以分别从源端数据库和目标端数据库中实时采集其执行事务所产生的一系列事务日志。
在一示出的实施方式中,步骤S201具体可以参考上述图2对应实施例中的步骤S101,此处不再进行赘述。
步骤S202,解析采集到的事务日志,以获取针对源端数据库的源端操作记录以及针对目标端数据库的目标端操作记录。
进一步地,在一示出的实施方式中,数据同步校验方在分别从源端数据库和目标端数据库中采集到对应的事务日志后,可以进一步对采集到的事务日志进行解析,以分别获取针对源端数据库的源端操作记录以及针对目标端数据库的目标端操作记录。
在一示出的实施方式中,步骤S202具体可以参考上述图2对应实施例中的步骤S101,此处不再进行赘述。
步骤S203,确定源端数据库和目标端数据库中的数据是否为有主键数据。
在一示出的实施方式中,数据同步校验方可以确定源端数据库和目标端数据库中存储的数据是否为有主键数据。在一示出的实施方式中,如果源端数据库和目标端数据库中存储的数据是有主键数据,则执行步骤S206;如果源端数据库和目标端数据库中存储的数据是无主键数据,则执行步骤S204。
在一示出的实施方式中,步骤S203具体可以参考上述图2对应实施例中的步骤S102,此处不再进行赘述。
步骤S204,确定源端数据库和目标端数据库中具有相同事务标识的目标事务。
在一示出的实施方式中,如果源端数据库和目标端数据库中存储的数据是无主键数据,数据同步校验方可以确定源端数据库和目标端数据库中具有相同事务标识的目标事务。
在一示出的实施方式中,步骤S204具体可以参考上述图2对应实施例中的步骤S103,此处不再进行赘述。
步骤S205,针对获取到的与目标事务相关的源端操作记录以及目标端操作记录进行比对处理。
在一示出的实施方式中,数据同步校验方在确定源端数据库和目标端数据库中具有相同事务标识的目标事务后,可以针对获取到的与该目标事务相关的源端操作记录以及目标端操作记录进行比对处理。
在一示出的实施方式中,步骤S205具体可以参考上述图2对应实施例中的步骤S103,此处不再进行赘述。
需要说明的是,本说明书对上述比对处理的实施方式不做具体限定。
在一示出的实施方式中,与目标事务相关的源端操作记录和目标端操作记录中均可以包括多个字段,该多个字段可以分别用于描述数据库名称、数据表名称、操作类型和被操作的值,等等。基于此,数据同步校验方可以针对与目标事务相关的源端操作记录以及目标端操作记录中的所有字段的内容进行比对处理。
在一示出的实施方式中,数据同步校验方也可以通过哈希(hash)算法分别计算获取到的与目标事务相关的源端操作记录的哈希值以及目标端操作记录的哈希值,并对比该源端操作记录的哈希值与该目标端操作记录的哈希值。
示例性的,数据同步校验方可以通过消息摘要算法版本5 (Message DigestAlgorithm 5,MD5),计算与目标事务相关的源端操作记录的MD5值以及目标端操作记录的MD5值,并对比该源端操作记录的MD5值与该目标端操作记录的MD5值,从而可以提升源端操作记录与目标端操作记录的比对效率。
其中,MD5是一种 Hash 算法,MD5 值就是一串 128 bit 的数据。MD5 的核心是通过算法把任意长度的原始数据(例如上述源端操作记录和目标端操作记录)映射成128 bit的数据,此处不再展开详述。
步骤S206,确定源端数据库和目标端数据库中具有相同主键信息的目标主键。
在一示出的实施方式中,如果源端数据库和目标端数据库中存储的数据是有主键数据,数据同步校验方可以确定源端数据库和目标端数据库中的同一个主键,以基于该同一个主键进行数据同步校验。
在一示出的实施方式中,如果源端数据库和目标端数据库中存储的数据是有主键数据,则获取到的源端操作记录和目标端操作记录中均可以包含相应的主键信息。基于此,数据同步校验方可以确定源端数据库和目标端数据库中具有相同主键信息的目标主键。
在一示出的实施方式中,数据同步校验方可以确定获取到的源端操作记录中包含的主键信息,并进一步确定获取到的目标端操作记录中是否存在包含相同的该主键信息的目标端操作记录,如果是,则可以将该主键信息对应的主键确定为待比对的目标主键。
步骤S207,针对获取到的与目标主键相关的源端操作记录以及目标端操作记录进行比对处理。
进一步地,在一示出的实施方式中,数据同步校验方可以针对获取到的与该目标主键相关的源端操作记录和目标端操作记录进行比对处理,以校验数据同步的准确性。
示例性的,数据同步校验方可以通过对比获取到的包含该目标主键的主键信息的源端操作记录和目标端操作记录是否相同,来校验数据同步的准确性。
示例性的,请参阅图6,图6是一示例性实施例提供的一种基于主键的数据同步校验示意图。如图6所示,以目标主键是主键1为例,数据同步校验方获取到的与该主键1相关的源端操作记录可以包括操作记录11、操作记录12、操作记录13、操作记录14。如图6所示,操作记录11、操作记录12、操作记录13、操作记录14均包含主键1的主键信息key=1。如图6所示,操作记录11中包含的操作类型为insert操作,操作记录12中包含的操作类型为update操作,操作记录13中包含的操作类型为update操作,操作记录14中包含的操作类型为delete操作。相应的,如图6所示,数据同步校验方获取到的与该主键1相关的目标端操作记录可以包括操作记录21、操作记录22、操作记录23。如图6所示,操作记录21、操作记录22、操作记录23均包含主键1的主键信息key=1。如图6所示,操作记录21中包含的操作类型为insert操作,操作记录22中包含的操作类型为update操作,操作记录23中包含的操作类型为delete操作。
如图6所示,数据同步校验方在从源端数据库获取到针对主键1的操作记录11后,从目标端数据库中获取同样针对主键1的操作记录21,并对比操作记录11与操作记录21是否相同。进一步地,数据同步校验方在从源端数据库获取到针对主键1的操作记录12后,可以从目标端数据库中获取同样针对主键1的操作记录22,并对比操作记录12与操作记录22是否相同。进一步地,数据同步校验方在从源端数据库获取到针对主键1的操作记录13后,可以从目标端数据库中获取同样针对主键1的操作记录23,并对比操作记录13与操作记录23是否相同,等等。
在一示出的实施方式中,数据同步校验方针对每个主键都可以保存其对应的操作记录序列。在一示出的实施方式中,如果操作记录11与操作记录21相同,则可以从数据同步校验方存储的针对主键1的操作记录序列中删除该操作记录11与操作记录21,以节省数据同步校验方中的存储空间。
需要说明的是,本说明书对上述比对处理的实施方式不做具体限定。
在一示出的实施方式中,与目标主键相关的源端操作记录和目标端操作记录中均可以包括多个字段,该多个字段可以分别用于描述数据库名称、数据表名称、操作类型和被操作的值,等等。基于此,数据同步校验方可以针对与目标主键相关的源端操作记录以及目标端操作记录中的所有字段的内容进行比对处理。
在一示出的实施方式中,数据同步校验方也可以通过哈希算法分别计算获取到的与目标主键相关的源端操作记录的哈希值以及目标端操作记录的哈希值,并对比该源端操作记录的哈希值与该目标端操作记录的哈希值。
示例性的,数据同步校验方可以通过MD5,计算与目标主键相关的源端操作记录的MD5值以及目标端操作记录的MD5值,并对比该源端操作记录的MD5值与该目标端操作记录的MD5值,从而可以提升源端操作记录与目标端操作记录的比对效率。
示例性的,以图6为例,数据同步校验方可以分别计算操作记录11与操作记录21的MD5值,并对比操作记录11与操作记录21的MD5值是否相同;进一步地,数据同步校验方可以分别计算操作记录12与操作记录22的MD5值,并对比操作记录12与操作记录22的MD5值是否相同,等等,此处不再进行例举。
在一示出的实施方式中,在针对源端数据库和目标端数据库中多个不同的目标主键并行执行操作时,数据同步校验方可以通过多个线程针对获取到的与多个目标主键相关的源端操作记录以及目标端操作记录进行并行的比对处理,以提升数据同步校验的效率。
示例性的,请参阅图7,图7是一示例性实施例提供的另一种基于主键的数据同步校验示意图。如图7所示,从源端数据库中获取到了操作记录R11、操作记录R12、操作记录R13、操作记录R14、操作记录R15、操作记录R16。其中,操作记录R11和操作记录R14是针对主键1的源端操作记录,操作记录R12和操作记录R15是针对主键2的源端操作记录,操作记录R13和操作记录R16是针对主键3的源端操作记录。如图7所示,从目标端数据库中获取到了操作记录R21、操作记录R22、操作记录R23、操作记录R24、操作记录R25、操作记录R26。其中,操作记录R21和操作记录R24是针对主键1的源端操作记录,操作记录R22和操作记录R25是针对主键2的源端操作记录,操作记录R23和操作记录R26是针对主键3的源端操作记录。
进一步地,如图7所示,数据同步校验方中用于进行数据同步校验的任务进程(Taskworker)可以将获取到的操作记录按照其对应的主键进行打乱(Shuffle),并将操作记录分配到线程池(Threadpool)中不同的线程中进行并行的比对处理。
如图7所示,数据同步校验方可以将源端数据库中针对主键1的操作记录R11、操作记录R14以及目标端数据库中针对主键1的操作记录R21和操作记录R24分配到线程T1中进行比对处理。其中,操作记录R11与对应的操作记录R21进行比对,操作记录R14与对应的操作记录R24进行比对。
如图7所示,数据同步校验方可以将源端数据库中针对主键2的操作记录R12、操作记录R15以及目标端数据库中针对主键2的操作记录R22和操作记录R25分配到线程T2中进行比对处理。其中,操作记录R12与对应的操作记录R22进行比对,操作记录R15与对应的操作记录R25进行比对。
如图7所示,数据同步校验方可以将源端数据库中针对主键3的操作记录R13、操作记录R16以及目标端数据库中针对主键3的操作记录R23和操作记录R26分配到线程T3中进行比对处理。其中,操作记录R13与对应的操作记录R23进行比对,操作记录R16与对应的操作记录R26进行比对。
在一示出的实施方式中,数据同步校验方除了比对与该目标主键相关的源端操作记录和目标端操作记录外,也可以通过对比源端数据库和目标端数据库中该目标主键当前最新的状态,来校验数据同步的准确性,本说明书对此不做具体限定。
其中,当获取到针对该目标主键的insert操作时,可以更新该目标主键的状态为insert操作的后镜像(即要插入的值);当获取到针对该目标主键的update操作时,可以更新该目标主键的状态为update操作的后镜像(即更新后的值);当获取到针对该目标主键的delete操作时,则可以标记删除该目标主键对应的数据记录。
在一示出的实施方式中,如果源端数据库在较短的时间内对该目标主键执行了大量相同的操作,则在数据同步过程中,目标端数据库可以将该大量相同的操作合并为一个操作,最后,数据同步校验方可以仅对比验源端数据库和目标端数据库中该目标主键的最新状态是否相同,以便捷、高效地校验数据同步的准确性。
示例性的,源端数据库在较短的时间内(例如1分钟内)针对目标主键执行了1条insert操作和1000条update操作,其中,这1000条update操作中的第1条update操作用于将insert的数据从0更新为1,第2条update操作用于将该数据从1更新为2,第3条update操作用于将该数据从2再次更新为3,等等,最后第1000条update操作用于将该数据从999更新为1000。如此,在数据同步过程中,目标端数据库可以将这1000条update操作合并为一条update操作,这一条update操作用于将insert的数据从0更新为1000。如此,数据同步校验方可以通过比对源端数据中的目标主键在1000条update操作后的状态与目标端数据中的目标主键在合并后得到的1条update操作后的状态是否相同,来校验数据同步的准确性,等等,本说明书对此不做具体限定。
步骤S208,基于比对结果对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,对于无主键数据,数据同步校验方在针对与目标事务相关的源端操作记录和目标端操作记录进行比对处理后,可以基于比对结果对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,如果与目标事务相关的源端操作记录和目标端操作记录相同(例如其计算得到的MD5值相同),则可以确定源端数据库和目标端数据库之间同步的增量数据是一致的。
示例性的,以图3为例,如果与事务1相关的源端操作记录1、源端操作记录2、源端操作记录3均与目标端操作记录1、目标端操作记录2、目标端操作记录3一一相同,例如其MD5值一一相同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据是一致的。
示例性的,仍以图3为例,如果与事务1相关的源端操作记录1、源端操作记录2、源端操作记录3与目标端操作记录1、目标端操作记录2、目标端操作记录3之间存在不同,例如其MD5值存在不同,则数据同步校验方可以确定源端数据库和目标端数据库之间同步的增量数据不一致。例如,源端操作记录1为insert操作,而目标端操作记录1为delete操作,二者计算出来的MD5值不同,则可以确定源端数据库和目标端数据库之间同步的增量数据不一致。并且,数据同步校验方可以进一步定位出是事务1中的操作1的同步出现了错误。
在一示出的实施方式中,对于有主键数据,数据同步校验方在针对与目标主键相关的源端操作记录和目标端操作记录进行比对处理后,可以基于比对结果对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,如果与目标主键相关的源端操作记录和目标端操作记录相同(例如其计算得到的MD5值相同),则可以确定源端数据库和目标端数据库之间同步的增量数据是一致的。
示例性的,如图6所述,数据同步校验方实时获取到的与主键1相关的操作记录11和操作记录21相同,例如其计算得到的MD5值相同,则数据同步校验方可以确定当前源端数据库和目标端数据库之间同步的增量数据是一致的。
进一步地,如图6所示,数据同步校验方实时获取到的与主键1相关的操作记录12和操作记录22相同,例如其计算得到的MD5值相同,则数据同步校验方可以确定当前源端数据库和目标端数据库之间同步的增量数据是一致的。
进一步地,如图6所示,数据同步校验方实时获取到的与主键1相关的操作记录13和操作记录23不同,其中,操作记录13的操作类型是update,操作记录23的操作类型是delete,二者计算得到的MD5值不同,则数据同步校验方可以确定当前源端数据库和目标端数据库之间同步的增量数据不一致。如图6所示,实际上目标端数据库在同步过程中遗漏了源端数据库中针对主键1的一个update操作。
在一示出的实施方式中,对于有主键数据,数据同步校验方在针对源端数据库和目标端数据库中目标主键当前的最新状态进行比对处理后,可以基于比对结果对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。
示例性的,以上述源端数据库在较短的时间内(例如1分钟内)针对目标主键执行了1条insert操作和1000条update操作,目标端数据库针对目标主键执行了1条insert操作和合并后得到的1条update操作为例。如果源端数据中的目标主键在1000条update操作后的状态与目标端数据中的目标主键在该合并后得到的1条update操作后的状态相同(例如均为1000),则可以确定源端数据库和目标端数据库之间同步的增量数据是一致的,否则,可以确定源端数据库和目标端数据库之间同步的增量数据不一致。
综上,在源端数据库向目标端数据库同步增量数据的过程中,本申请可以分别采集并解析源端数据库和目标端数据库中产生的事务日志,以分别获取针对源端数据库的源端操作记录和针对目标端数据库的目标端操作记录。进一步地,当源端数据库和目标端数据库中的数据均为无主键数据时,本申请可以直接对比获取到的与具备相同事务标识的同一个事务相关的源端操作记录和目标端操作记录,相当于对比源端数据库和目标端数据库中执行的同一个事务中的所有操作是否相同,进而校验源端数据库和目标端数据库之间同步的增量数据的一致性。如此,本申请考虑到增量数据的同步过程实际上就是事务的复制过程,从而对于无主键数据,可以直接以双方数据库中具备相同事务标识的同一个事务为校验标准,通过对比源端数据库和目标端数据库中同一个事务对应的各个操作记录是否相同,实现对源端数据库和目标端数据库之间同步的增量数据进行一致性校验。本申请有效解决了无主键数据无法进行数据同步校验的问题,全面、可靠地满足了实际应用中的数据同步校验需求。
此外,需要说明的是,本说明书对上述数据同步的具体应用场景不作限定。在一些可能的实施方式中,上述数据同步可以是源端数据库向目标端数据库进行实时的数据同步,也可以是源端数据库向目标端数据库进行数据迁移中涉及的数据同步,也可以是数据传输或者数据订阅等场景中涉及的数据同步,等等,本说明书对此不做具体限定。
与上述方法流程实现对应,本说明书的实施例还提供了一种数据同步校验装置,可以应用于图1所示系统架构中的数据同步校验方。请参阅图8,图8是一示例性实施例提供的一种数据同步校验装置的结构示意图。如图8所示,该装置30包括:
获取单元301,用于分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;
确定单元302,用于确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;
第一比对单元303,用于如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;
第一校验单元304,用于基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,所述第一比对单元303,具体用于:
确定获取到的源端操作记录中是否包含事务标识;
如果所述源端操作记录中包含事务标识,进一步确定获取到的所述目标端操作记录中是否存在包含所述事务标识的目标端操作记录;如果是,将所述事务标识对应的事务确定为所述目标事务。
在一示出的实施方式中,所述装置30还包括:
事务标识插入单元305,用于所述目标端数据库在提交所述目标事务之前,在与所述目标端数据库对应的事务表中插入所述目标事务的事务标识,并生成与所述事务标识的插入操作对应的事务日志;
所述第一比对单元303,具体用于:
确定获取到的所述目标端操作记录中是否存在与所述事务标识的插入操作对应的目标端操作记录;其中,与所述事务标识的插入操作对应的目标端操作记录中包含所述事务标识。
在一示出的实施方式中,所述第一比对单元303,具体用于:
计算获取到的与所述目标事务相关的源端操作记录的哈希值,以及计算获取到的与所述目标事务相关的目标端操作记录的哈希值,并对比所述源端操作记录的哈希值与所述目标端操作记录的哈希值;
所述第一校验单元304,具体用于:
如果所述源端操作记录的哈希值与所述目标端操作记录的哈希值相同,则确定所述源端数据库和所述目标端数据库之间同步的增量数据一致。
在一示出的实施方式中,所述装置30还包括:
第二比对单元306,用于如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为有主键数据,确定所述源端数据库和所述目标端数据库中具有相同主键信息的目标主键,并针对获取到的与所述目标主键相关的源端操作记录以及目标端操作记录进行比对处理;
第二校验单元307,用于基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
在一示出的实施方式中,所述第二比对单元306,具体用于:
确定获取到的源端操作记录中包含的主键信息,并进一步确定获取到的目标端操作记录中是否存在包含所述主键信息的目标端操作记录,如果是,将所述主键信息对应的主键确定为所述目标主键。
在一示出的实施方式中,所述第二比对单元306,具体用于:
通过多个线程针对获取到的与多个目标主键相关的源端操作记录以及目标端操作记录进行并行的比对处理。
在一示出的实施方式中,所述第二比对单元306,具体用于:
计算获取到的与所述目标主键相关的源端操作记录的哈希值,以及计算获取到的与所述目标主键相关的目标端操作记录的哈希值,并对比所述源端操作记录的哈希值与所述目标端操作记录的哈希值;
所述第二校验单元307,具体用于:
如果所述源端操作记录的哈希值与所述目标端操作记录的哈希值相同,则确定所述源端数据库和所述目标端数据库之间同步的增量数据一致。
上述装置30中各个单元的功能和作用的实现过程具体详见上述图1-图7对应实施例的描述,在此不再进行赘述。应理解,上述装置30可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的处理器(CPU)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备。请参阅图9,图9是一示例性实施例提供的一种计算机设备的结构示意图。图9所示的计算机设备1000可以为图1所示的数据同步校验方。如图9所示,该计算机设备1000包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图9所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是CPU,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中数据同步校验方法的各个步骤,包括:分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验,等等。对上述数据同步校验方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中数据同步校验方法的各个步骤。具体请参见上述图1-图7对应实施例的描述,此处不再进行赘述。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,终端设备包括一个或多个CPU、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (11)
1.一种数据同步校验方法,其特征在于,所述方法包括:
分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;
确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;
如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;
基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
2.根据权利要求1所述的方法,其特征在于,所述确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,包括:
确定获取到的源端操作记录中是否包含事务标识;
如果所述源端操作记录中包含事务标识,进一步确定获取到的所述目标端操作记录中是否存在包含所述事务标识的目标端操作记录;如果是,将所述事务标识对应的事务确定为所述目标事务。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述目标端数据库在提交所述目标事务之前,在与所述目标端数据库对应的事务表中插入所述目标事务的事务标识,并生成与所述事务标识的插入操作对应的事务日志;
所述确定获取到的所述目标端操作记录中是否存在包含所述事务标识的目标端操作记录,包括:
确定获取到的所述目标端操作记录中是否存在与所述事务标识的插入操作对应的目标端操作记录;其中,与所述事务标识的插入操作对应的目标端操作记录中包含所述事务标识。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理,包括:
计算获取到的与所述目标事务相关的源端操作记录的哈希值,以及计算获取到的与所述目标事务相关的目标端操作记录的哈希值,并对比所述源端操作记录的哈希值与所述目标端操作记录的哈希值;
所述基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验,包括:
如果所述源端操作记录的哈希值与所述目标端操作记录的哈希值相同,则确定所述源端数据库和所述目标端数据库之间同步的增量数据一致。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为有主键数据,确定所述源端数据库和所述目标端数据库中具有相同主键信息的目标主键,并针对获取到的与所述目标主键相关的源端操作记录以及目标端操作记录进行比对处理;
基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
6.根据权利要求5所述的方法,其特征在于,所述确定所述源端数据库和所述目标端数据库中具有相同主键信息的目标主键,包括:
确定获取到的源端操作记录中包含的主键信息,并进一步确定获取到的目标端操作记录中是否存在包含所述主键信息的目标端操作记录,如果是,将所述主键信息对应的主键确定为所述目标主键。
7.根据权利要求5所述的方法,其特征在于,所述针对获取到的与所述目标主键相关的源端操作记录以及目标端操作记录进行比对处理,包括:
通过多个线程针对获取到的与多个目标主键相关的源端操作记录以及目标端操作记录进行并行的比对处理。
8.根据权利要求5-7任意一项所述的方法,其特征在于,所述针对获取到的与所述目标主键相关的源端操作记录以及目标端操作记录进行比对处理,包括:
计算获取到的与所述目标主键相关的源端操作记录的哈希值,以及计算获取到的与所述目标主键相关的目标端操作记录的哈希值,并对比所述源端操作记录的哈希值与所述目标端操作记录的哈希值;
所述基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验,包括:
如果所述源端操作记录的哈希值与所述目标端操作记录的哈希值相同,则确定所述源端数据库和所述目标端数据库之间同步的增量数据一致。
9.一种数据同步校验装置,其特征在于,所述装置包括:
获取单元,用于分别从源端数据库和目标端数据库中采集并解析事务日志,以获取针对所述源端数据库的源端操作记录以及针对所述目标端数据库的目标端操作记录;
确定单元,用于确定所述源端数据库和所述目标端数据库中存储的数据的数据类型;
第一比对单元,用于如果所述源端数据库和所述目标端数据库中存储的数据的数据类型为无主键数据,确定所述源端数据库和所述目标端数据库中具有相同事务标识的目标事务,并针对获取到的与所述目标事务相关的源端操作记录以及目标端操作记录进行比对处理;
第一校验单元,用于基于比对结果对所述源端数据库和所述目标端数据库之间同步的增量数据进行一致性校验。
10.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至8任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310595511.1A CN116340430A (zh) | 2023-05-24 | 2023-05-24 | 一种数据同步校验方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310595511.1A CN116340430A (zh) | 2023-05-24 | 2023-05-24 | 一种数据同步校验方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340430A true CN116340430A (zh) | 2023-06-27 |
Family
ID=86882686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310595511.1A Pending CN116340430A (zh) | 2023-05-24 | 2023-05-24 | 一种数据同步校验方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340430A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101684A1 (zh) * | 2012-12-28 | 2014-07-03 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置和系统 |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
-
2023
- 2023-05-24 CN CN202310595511.1A patent/CN116340430A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101684A1 (zh) * | 2012-12-28 | 2014-07-03 | 腾讯科技(深圳)有限公司 | 数据同步方法、装置和系统 |
CN110347746A (zh) * | 2019-06-13 | 2019-10-18 | 武汉达梦数据库有限公司 | 一种异构数据库同步数据一致性校验方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10866973B2 (en) | Test data management | |
CN105989059B (zh) | 数据记录核对方法及装置 | |
US20210109917A1 (en) | System and Method for Processing a Database Query | |
US20160026540A1 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
US9418094B2 (en) | Method and apparatus for performing multi-stage table updates | |
US9990391B1 (en) | Transactional messages in journal-based storage systems | |
US11176110B2 (en) | Data updating method and device for a distributed database system | |
US10108658B1 (en) | Deferred assignments in journal-based storage systems | |
CN110706101B (zh) | 在区块链中并发执行交易的方法和装置 | |
US20190129982A1 (en) | Just-in-time multi-indexed tables in a shared log | |
CN113495872A (zh) | 分布式数据库中的事务处理方法及系统 | |
CN115237444A (zh) | 基于版本号的并发控制方法、装置、设备及存储介质 | |
CN113626416A (zh) | 数据校验的方法、装置、计算设备和存储介质 | |
CN117216031A (zh) | 一种基于分布式数据库的数据回溯方法、装置及介质 | |
CN111639087A (zh) | 数据库中数据更新方法、装置和电子设备 | |
CN116340430A (zh) | 一种数据同步校验方法及相关设备 | |
CN113419896B (zh) | 数据恢复方法、装置、电子设备及计算机可读介质 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
US11556519B2 (en) | Ensuring integrity of records in a not only structured query language database | |
CN112948389A (zh) | 基于md5的数据库表数据比对方法及设备 | |
CN112948494A (zh) | 数据同步方法、装置、电子设备和计算机可读介质 | |
CN111427902A (zh) | 基于轻量型数据库的元数据管理方法、装置、设备及介质 | |
CN109165208A (zh) | 一种用于将数据加载到数据库中的方法及系统 | |
CN114443777B (zh) | 多数据聚合管理方法、装置、设备及系统 | |
US11468038B1 (en) | System and method for interfacing a database system with a consensus system |
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 |