迁移完成后如何校验数据一致性

更新时间:
复制为 MD 格式

本文介绍在使用在线迁移服务完成数据迁移后,对数据的一致性校验提供方案与建议。

重要
  • 在线迁移服务不保证迁移数据一致性,您必须对数据的一致性进行校验。

  • 校验过程中,若请求源或目的端,可能会产生相应的请求费、流量费。

  • 校验期间若源端、目的端仍有数据写入,可能会对校验结果产生影响。

校验维度

数据迁移完成后,无法保证目的端和源端的数据的一致性,必须进行数据校验。数据校验可分为三个维度:文件数量一致性文件内容一致性文件元数据(部分)一致性。必须全部执行这三个维度的校验,才能保证数据校验流程的完整性。

  • 文件数量一致性:指源端文件的集合(S1)和迁移到目的端文件的集合(S2)是一致的,无缺失遗漏,属于数量维度。

  • 文件内容一致性:指每个文件的内容在源端和其在目的端是一致的,无损毁错乱,属于内容维度。

  • 文件元数据(部分)一致性:指每个文件的元数据条目在源端和其在目的端是一致的,无元数据条目缺失或错乱,属于元数据维度。在线迁移服务仅支持迁移部分元数据,具体请参考相应迁移教程中的注意事项使用限制

校验逻辑

不同的类型的目的端,能提供不同的功能用以校验。如OSS可以对桶生成文件列表清单,且对所有上传的对象都提供可靠的CRC64值。LocalFS则无类似功能,只能用户自行列举文件清单、计算校验和。

以下为不同类型目的端的数据一致性的校验逻辑:

目的端类型

校验维度

校验逻辑

OSS

文件数量一致性

  • 校验原理:遍历源端文件集合,确保每个文件在目的端集合中都存在。

  • 校验步骤:

    • 获取源端文件清单:可通过相应的遍历接口获取,或通过清单功能生成(若有)。

    • 获取目标端文件清单:可通过ListObjects接口获取,或使用OSS的清单功能生成。

    • 执行校验:遍历源端文件清单,确保每个文件在目标端文件清单中都存在。

文件内容一致性

  • 校验原理:对比每个文件的校验和。

  • 校验步骤:

    • 获取源端CRC64:若源端有同样类型的CRC64值,则直接通过接口获取即可。否则,需要逐一读取并计算源端文件CRC64值。

    • 获取目标端CRC64:每个迁移成功的对象的CRC64值在迁移报告里都有列出。您也可以调用HeadObject接口来从OSS上实时获取。

    • 执行校验:对比上述得到的两端CRC64值。

文件元数据(部分)一致性

  • 校验原理:对比每个文件的(部分)元数据条目。

  • 校验步骤:

    • 获取源端文件元数据:可通过相应的接口获取,如S3HeadObject等。

    • 获取目标端文件元数据:可通过HeadObject接口获取。

    • 执行校验:逐一对比上述两组(仅在线迁移服务支持的部分)元数据条目。

LocalFS

文件数量一致性

  • 校验原理:遍历源端文件集合,确保每个文件在目的端集合中都存在。

  • 校验步骤:

    • 获取源端文件清单:可通过相应的遍历接口获取,或清单功能生成(若有)。

    • 获取目标端文件清单:只能通过相应的遍历接口获取。

    • 执行校验:遍历源端文件清单,确保每个文件在目标端文件清单中都存在。

文件内容一致性

  • 校验原理:对比每个文件的校验和。

  • 校验步骤:

    • 获取源端校验和:若源端有可直接使用的校验和(MD5/CRC32/CRC64等),则直接通过接口获取即可。否则,需要预先选定一种校验算法(推荐MD5),逐一读取并计算源端文件该算法的校验和。

    • 获取目标端校验和:由于文件系统并无校验和元数据,故迁移报告中相应校验字段不可用。需要逐一读取并计算LocalFS端文件与源端相同算法的校验和。

    • 执行校验:对比上述得到的两端校验和。

文件元数据(部分)一致性

  • 校验原理:对比每个文件的(部分)元数据条目。

  • 校验步骤:

    • 获取源端文件元数据:可通过相应的接口获取,如S3HeadObject等。

    • 获取目标端文件元数据:可通过POSIX文件I/O接口获取,如stat

    • 执行校验:逐一对比上述两组(仅在线迁移服务支持的部分)元数据条目。

成本与性能优化建议

  • 使用内网环境校验:尽量使用内网环境请求两端数据,可有效降低网络延迟,同时免除或降低相关费用。

  • 优化校验逻辑:校验文件内容一致性时,可先对比文件大小(size),不一致直接判定失败,一致后再进入校验和获取流程。

  • 抽样校验策略:对于TB/PB级存储量、亿级文件数的海量数据场景,全量校验成本极高,在保证数据可信度的前提下,建议采用抽样策略。通过覆盖不同特征的文件样本,以较低成本实现数据一致性校验。建议:

    • 按文件大小抽样:

      • 小文件样本:抽取若干小于150MB的文件,此类文件通常通过简单上传完成。

      • 大文件样本:抽取若干大于150MB的文件,此类文件通常通过分片并发上传完成。

      • 超大文件样本:若有超过5GB的文件,建议单独抽样,此类文件通常传输周期长、带宽消耗大。

      • 目录/空文件样本:属于边界案例,需确认被成功创建且元数据符合预期。如目录的Uid、Gid、Permissions等。

    • 按业务特征与元数据抽样:

      • 核心业务样本:若迁移的数据中存在核心业务文件,请重点全量检测。

      • 文件类型样本:根据业务类型,抽取关键格式的文件,如.jpg.pdf.log.json.sql等。

      • 特殊元数据样本:根据业务类型,若源端文件带有自定义元数据(如x-oss-meta-*或特定HTTP header),需抽取此类文件,以验证自定义元数据的一致性。

      • 冷热数据样本:抽取最近更新的文件和历史归档文件,验证LastModified等元数据是否准确保留。

      • 路径与命名样本:如目录层级较深(如超过10层)的文件;文件路径和名称中包含空格、中文、Unicode字符、特殊符号的文件,以验证是否存在编解码和转义问题。

    • 随机统计抽样:

      • 使用随机算法从文件清单中抽取一定比例(如1%~5%)的文件。以便发现无规律的随机性错误。

重要

抽样校验策略仅作为海量数据场景下平衡校验成本与效率的折中方案。抽样校验基于统计学原理,存在漏检风险,不能替代全量校验。对于核心业务数据,仍强烈建议进行全量校验。

校验问题与排查

若校验过程中,若发现校验数据不一致,请按照如下排查:

  • 确认源端、目的端该文件是否有更新。

  • 在迁移报告中检索该文件的各项信息,与源端、目的端信息分别进行对比,并分析可能的原因。

  • 如无法定位问题,请提交工单联系技术支持。工单中请注明控制台地域、任务ID、文件路径等信息。

标记任务状态

在校验工作完成且确认无误后,您可以登录在线迁移服务控制台,在任务列表界面的状态列,勾选对应任务的“确认数据完整性与一致性”,以确认校验工作结束。