更新时间:2025-05-06 GMT+08:00

数据验证

  • 数据验证标准

    迁移完成后,需要对源端和目的端数据做一致性比对,对于数据一致性比对的精度,不同的场景有不同的要求。一般来说,核心业务的数据库表要求源端和目的端100%一致;对于大数据类业务中的部分场景,例如用户画像计算等,可以约定原始数据90%一致。如下是一个参考标准,可根据实际情况调整:

    表1 数据校验标准参考

    分类

    数据一致性要求

    业务举例

    核心业务

    100%

    电商系统的核心会员数据、交易数据、支付数据等,数据是用户最核心的资产,涉及到真实的财产金额等。所以这部分核心业务对于数据一致性要求是100%。建议进行数据的行数对比和对象对比,抽样内容对比。

    非核心业务

    99.9%

    电商系统的用户购物车商品数据、客服沟通消息数据等,作为非核心业务的数据,如果有微量损失,并不会影响客户的业务使用和体验。建议若切换时间有限,可以只进行数据的行数对比。

    边缘业务

    90%

    电商系统的首页推荐数据、用户浏览数据、用户画像数据等,如果有一部分损失,并不会影响客户的业务使用可体验。建议进行表级的的行数对比,抽样内容对比。

  • 数据验证方法

    数据分为数据库数据、中间件数据和文件数据,这三种数据的一致性验证方法和工具不同:

    • 数据库数据一致性验证的方法如下表所示。
      表2 数据库一致性对比方式

      对比项

      工具

      描述

      库和表级内容对比

      DRS工具

      查询对比数据库表的每一条数据,确保每一条的每一个字段都与源端数据库表一致。相较于行对比,内容对比较慢。

      python脚本

      根据DRS任务的ID,调用接口批量执行对比任务,对比结果输出到xlsx文件中。相比于工具可批量执行,执行效率较高。

      库和表级对象对比

      DRS工具

      对数据库、索引、表、视图、存储过程和函数、表的排序规则等对象进行对比。

      python脚本

      根据DRS任务的ID,调用接口批量执行对比任务,对比结果输出到xlsx文件中。相比于工具,可批量执行,执行效率较高。

      库和表级行数对比

      DRS工具

      对比表的行数是否一致,只查询表的行数,对比速度较快

      python脚本

      批量脚本,创建N个并发任务线程,遍历所有表进行逐一COUNT,输出对比结果到xlsx文件中,相比于工具可批量执行,执行效率较高。

    • 中间件数据一致性验证的方法如下表所示:
      表3 中间件一致性对比方式

      对比项

      工具

      描述

      Keys数量对比

      redis-cli

      通过redis-cli命令info keyspace查看keys参数和expires参数的值,对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示Keys数量一致,迁移正常。

      Key-value内容对比

      开源Redis-Full-Check工具

      通过全量对比源端和目的端redis中的数据内容的方式来进行数据校验,其工具实现方式会多次抓取源和目的端的数据进行差异化比较,记录不一致的数据进入下轮对比。然后通过多轮比较不断收敛。最后sqlite中存在的数据就是最终的差异结果,无内容则表示数据内容完整,迁移正常。

    • 文件类数据一致性验证的方法如下表所示:
      表4 文件数据一致性对比方式

      类型

      对比项

      工具

      描述

      对象存储

      对象数量

      OMS

      OMS迁移工具,通过MD5校验文件完整性和比对两边桶对象数据量是否一致。

      文件存储

      文件数量

      rclone

      Rclone迁移工具,使用MD5哈希值来验证文件的完整性。同步后会再对比源端和目的端文件数量。

      rsync

      rsync迁移工具,使用MD5哈希值来验证文件的完整性,如果校验和不匹配,则rsync会重新传输该文件,以确保数据一致性。同步后会再对比源端和目的端文件数量。

      文件大小

      python脚本

      迁移完成后,通过对比源端和目的端总文件大小判断是否一致。

      文件内容

      python脚本

      迁移完成后,通过计算源端和目的端文件的哈希值,比较两个文件的哈希值是否一致。