一种数据校对方法和装置制造方法及图纸

技术编号:18203824 阅读:37 留言:0更新日期:2018-06-13 06:09
本发明专利技术公开了一种数据校对方法和装置,发明专利技术旨在克服现有技术中主数据和备份数据校对的不足之处,以解决现有技术中因为同步延迟而导致的一致性校验的结果不准确的技术问题,达到了提高主数据库和备份数据库校验准确性的技术效果。所述方法包括以下步骤:以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据;校对主数据和备份数据,将存在差异的数据的主键插入校对列表中;根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除;若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。

【技术实现步骤摘要】
一种数据校对方法和装置
本专利技术涉及数据
,尤其涉及一种数据校对方法和装置。
技术介绍
目前大型互联网平台都需要架构数据库主从集群,其中备份数据库是一个或多个较为有效的解决方案就是建立MySQL主从集群,其中,备份数据库(又称为备用数据库或者是备库)是主数据库(又称为主库)的完全镜像。对于写请求仅在主库上进行,读请求会均衡分布到所有的数据库上,这样就使得整个数据库集群可以提供更大容量的读写服务。如果MySQL主库接收到新增或者是变更数据,就通过同步工具,将这些新增或者是变更的数据实时同步到备库。因此为确保主数据库和备份数据库一致性,需要对主备份数据库中数据进行校对,需要满足在不中断数据写入的情况下,提高校对效率和实时性。
技术实现思路
本专利技术旨在克服现有技术中主数据和备份数据校对的不足之处,以解决现有技术中因为同步延迟而导致的一致性校验的结果不准确的技术问题,达到了提高主数据库和备份数据库校验准确性的技术效果,提供一种数据校对方法和装置。为实现上述目的,本专利技术采用以下技术方案:本专利技术实施例提供一种数据校对方法,所述方法包括以下步骤:以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据;校对主数据和备份数据,将存在差异的数据的主键插入校对列表中;重复执行以下步骤N次,其中,N为预先设定的自然数,根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除;执行完N次所述步骤之后,若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。本专利技术实施例同时提供一种数据校对装置,所述装置包括:查询模块,以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据;更新模块,校对主数据和备份数据,将存在差异的数据的主键插入校对列表中;校对模块,重复执行以下步骤N次,其中,N为预先设定的自然数,根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除;判断模块,执行完N次所述步骤之后,若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。在本申请中,以校对列表作为一个中间量以及跟踪对象,多次比对主、备份数据库中的数据,将校对列表中存有的但当前在主、备份数据库中恢复一致的主键记录逐次筛除,从而有效解决了相关技术中因为同步延迟而导致的一致性校验的结果不准确的技术问题,达到了提高主备份数据库校验准确性的技术效果。此外,在本申请中,通过对数据库中的数据记录的划分,以生成并行的多个任务进行扫描,以及进行后续的一致性校验的步骤,从而达到了缩短校验时间的技术效果,实现了对处理能力的有效利用,从而满足了在一致性校验中不锁库、不锁表、不停止对外服务的要求,实现了在数据库和数据表处于正常的读写状态时进行动态检测的效果。附图说明图1为本专利技术实施例提供的数据校对装置的结构框图。图2为本专利技术实施例提供的数据校对装置的一种优选结构框图。图3为本专利技术实施例提供的数据校对装置的一种优选结构框图。图4为本专利技术实施例提供的数据校对方法的流程图。图5为本专利技术实施例提供的数据校对方法的一种优选流程图。图6为本专利技术实施例提供的数据校对方法的一种优选流程图。图7为本专利技术实施例提供的数据校对方法的一种优选流程图。具体实施方式下面结合附图和具体实施方式对本专利技术做进一步描述。本优选实施例的专利技术构思主要可以包括:初始化校对列表;对校对列表进行预定次数的更新操作;在完成上述预定次数的更新操作后,如果校对列表仍不为空,则表明该校对列表对应的主备份数据库的数据库不一致。其中,该校对列表中保留的是当次比较完成后确定的主数据库和备份数据库中存在差异的数据所对应的主键。优选的,为了达到上述目的,如图1所示的数据校对装置可以包括:查询模块101、更新模块102、校对模块103和判断模块104,下面对该结构进行具体描述。查询模块101,用于以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据。更新模块102,用于校对主数据和备份数据,将存在差异的数据的主键插入校对列表中。校对模块103,用于重复执行以下步骤N次,其中,N为预先设定的自然数,根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除。判断模块104,执行完N次所述步骤之后,若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。校对列表,作为在本申请技术方案中提出的概念之一,用于表示一种主键的集合。可选地,在本申请实施例中,作为这种主键集合的具体实现,其形式可以是主键所唯一对应的键值的集合,存储于一个列表中,以便在服务器中执行进一步的扫描、检索等读写操作以及排序、比对等运算操作。校对列表主要用于存储存在差异的主备份数据库记录所对应的主键。然而在本申请实施例中,校对列表并非静态,其中存储的主键可以在一次更新操作中继续存留,也可以被移除,而更新后的校对列表可以送入新的一次更新操作中,也可以输出至判断模块中以得出主备份数据库一致性的校验结果,从而可以通过对初始的校对列表的多次更新,逐步排除因主备份数据库同步延迟而导致的一致性判断的误判因素,继而缩小判定的范围,最终实现准确确定一次完整的校验周期内主备份数据库中存在差异的数据库记录的位置,并可以将这些位置输出为校验报告,以便查看或进一步的处理。可选地,在更新模块执行的一次操作中,可以根据该次操作开始阶段的差异主键列表中所记录的第一组主键,分别在主数据库及备份数据库中,检索出与第一组主键相对应的数据库记录,并分别用主数据库记录集以及备份数据库记录集来表示,然后可以在主数据库记录集以及备份数据库记录集之间进行对比,找出其中存在差异的部分所对应的第二组主键,并在校对列表中用第二组主键替换第一组主键,然后结束本次操作,从而完成一次对校对列表的更新。值得注意的是,第一组主键中主键的数量可以为一个或多个,也可以为零,第二组主键可以包括第一组主键中的一个或多个,也可以不包括其中的任何一个;第二组主键是第一组主键的一个子集。另一方面,第二组主键的确定可以在上述对比过程中进行,也可以在上述对比过程结束后进行。此外,上述用第二组主键替换第一组主键的描述应当理解为对于本申请实施例的一种描述,并不会对本申请构成任何限定,例如,更新模块还可以用于执行以下操作以实现上述效果:1)在第一主键组中获取第三主键组,其中,第三主键组在主数据库与备份数据库中所对应的数据库记录内容一致;2)将第三主键组从校对列表中删除。在上述场景下,通过对校对列表中数量有限的主键及其所对应的数据库记录、而非整个主、备份数据库的处理,可以减少对主备份数据库进行一致性校验的单个检测周期的耗时,从而为数据库及其所在系统在不停止对外服务的情况下进行主备份数据库的一致性的动态校验提供了技术基础。另一方面,由于单次检测耗时的缩短,提高了主备份数据库一致性校验的时效性,降低了由于时延而导致的一致性判断的错误率,从而提高了校验结果的准确性。进一本文档来自技高网...
一种数据校对方法和装置

【技术保护点】
一种数据校对方法,其特征是,所述方法包括以下步骤:以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据;校对主数据和备份数据,将存在差异的数据的主键插入校对列表中;重复执行以下步骤N次,其中,N为预先设定的自然数,根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除;执行完N次所述步骤之后,若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。

【技术特征摘要】
1.一种数据校对方法,其特征是,所述方法包括以下步骤:以相同查询条件查询主数据源中的主数据和备份数据源中的备份数据;校对主数据和备份数据,将存在差异的数据的主键插入校对列表中;重复执行以下步骤N次,其中,N为预先设定的自然数,根据校对列表中的主键去查询主数据源的主数据和备份数据源的备份数据,若某一主键的对应的主数据和备份数据相同,则将所述主键从校对列表中删除;执行完N次所述步骤之后,若所述校对列表中仍有主键,则判断所述主数据源和备份数据源不一致,否则,则判断所述主数据源和备份数据源一致。2.根据权利要求1所述的一种数据校对方法,其特征是,校对主数据和备份数据,将存在差异的数据的主键插入校对列表中的步骤,包括若同一主键在所述主数据库记录集中对应的数据库记录与在所述备份数据库记录集中对应的数据库记录不同,则将该主键记录为所述存在差异的数据库记录所对应的主键;若同一主键在所述主数据库记录集中存在对应的数据库记录、而在所述备份数据库记录集中不存在对应的数据库记录,则将该主键记录为所述存在差异的数据库记录所对应的主键;若同一主键在所述备份数据库记录集中存在对应的数据库记录、而在所述主数据库记录集中不存在对应的数据库记录,则将该主键记录为所述存在差异的数据库记录所对应的主键。3.根据权利要求1所述的一种数据校对方法,其特征是,判断所述主数据源和备份数据源不一致之后,还包括:执行数据修复操作,其中,所述数据修复操作包括:从执行完N次所述步骤之后得到的所述校对列表中查找同时被所述主数据库和所述备份数据库中的数据库记录包含的主键,记为第一主键类型的主键,使用所述主数据库中与类型为所述第一主键类型的主键对应的数据库记录覆盖所述备份数据库中与所述第一主键类型对应的数据库记录;从执行完N次所述步骤之后得到的所述校对列表中查找被所述主数据库中的数据库记录包含的、但没有被所述备份数据库中的数据库记录包含的主键,记为第二主键类型的主键,将所述主数据库中与所述第二主键类型的主键对应的数据库记录复制到所述备份数据库中;从执行完N次所述步骤之后得到的所述校对列表中查找被所述备份数据库中的数据库记录包含的、但没有被所述主数据库中的数据库记录包含的主键,记为第三主键类型,并从所述备份数据库中删除与所述第三主键类型的主键对应的数据库记录。4.根据权利要求1所述的一种数据校对方法,其特征是,在重复执行所述步骤N次之前,还包括:生成所述校对列表的初始值,其中,所述生成初始化的校对列表包括:并行地执行任务队列中的多个任务来扫描所述主数据库和所述备份数据库中的数据库记录,以获得所述校对列表的初始值,其中,每个所述任务包括以下操作,其中,任务最小键值的初始值为所述主数据库中被检测数据表的所有数据库记录对应的主键中的最小值:在所述主数据库中从与所述任务最小键值对应的数据库记录开始按主键从小到大的顺序扫描预定行数的数据库记录,将所述主数据库中当前扫描到的数据库记录记录为当前主数据库记录集,获取所述当前主数据库记录集中的数据库记录所对应的主键中的最大值作为任务最大键值,创建下一个任务,将所述任务最大键值作为所述下一个任务的任务最小键值,并将创建的所述下一个任务放入所述任务队列中;在所述备份数据库中扫描与值在范围[所述任务最小键值,所述任务最大键值)内的主键对应的数据库记录,将所述备份数据库中当前扫描到的数据库记录记录为当前备份数据库记录集;若同一主键在所述当前主数据库记录集中对应的数据库记录与在所述当前备份数据库记录集中对应的数据库记录不同,则将该主键记录为所述校对列表的初始值成员;若同一主键在所述当前主数据库记录集中存在对应的数据库记录、而在所述当前从数据库记录集中不存在对应的数据库记录,则将该主键记录为所...

【专利技术属性】
技术研发人员:陈震
申请(专利权)人:杭州恩牛网络技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1