/ 主机迁移服务 sms/ / / 如何校验源端与目的端的数据一致性?
更新时间:2025-02-25 gmt 08:00

如何校验源端与目的端的数据一致性?-九游平台

主机迁移服务提供了数据一致性校验功能,您可以在配置目的端或进行增量同步时,启用并配置该功能,对源端数据和目的端数据进行一致性校验。

注意事项

  • 使用该功能前,建议停止源端业务(涉及数据库时需要关闭数据库程序,而不是暂停),否则源端数据一直发生变化,导致源端和目的端数据存在差异。

    源端存在数据一直变化的目录,如:sms-agent的安装目录,/var/log系统日志目录等,属于正常现象,不代表主机迁移过程中产生了数据差异。

  • 数据一致性校验时长与需要校验的文件个数、大小成正比,部分场景可能耗时较长,业务割接耗时会增加,需要您自行评估对业务的影响。
  • 该功能可能占用较多的磁盘io,请评估对源端业务的影响。
  • 在使用一致性校验功能时,如果数据范围选择“仅包含下列目录”,并且填写的目录中同时存在父目录和子目录的情况,系统将自动仅对父目录下的所有内容进行校验,以避免重复校验。

    例如,在“仅包含下列目录”参数下填写了以下目录路径:

    /path,/path/test

    则系统会自动识别/path为父目录,并对/path下的所有内容(包括子目录/path/test及其内容)进行校验,而不会单独对/path/test进行重复校验。

约束限制

  • 该功能不适用于调整磁盘/分区的迁移场景,可能会出现因为两端对应路径无法准确映射而导致的数据校验差异。
  • 该功能不适用于校验跨文件系统的文件或共享文件夹,可能会出现校验误差。
  • 为保护源端业务的正常运行,每个目录最多只校验一百万个文件。
  • 为防止占用过多内存,只校验路径字符串长度小于1024字节的文件。
  • 对于windows主机,一致性校验功能暂不支持对包含非ascii字符(如中文、日文等)的路径执行校验操作。如果路径中包含此类字符,相关文件或目录将被自动跳过,不会进行校验。

配置目的端时启用数据一致性校验

在配置目的端时,可以启用数据一致性校验,并且在全量复制完成后,自动进行数据一致性校验。详细操作请参考。

增量同步时启用数据一致性校验

  1. 参考,打开“同步”窗口。
  2. 勾选“数据一致性”功能,默认使用快速校验(即比对文件大小和修改时间)。
    图1 增量同步时启用数据一致性校验
    根据下表参数说明并结合实际需求配置校验策略。

    参数

    说明

    启用哈希校验

    通过计算和比较文件内容的哈希值进行校验。适合于单文件体积大且文件内容重要的场景,将增加源端cpu负载及源端磁盘io负载,校验时间也更长。

    注意:
    • 被运作中的软件占用的文件无法进行哈希校验。
    • 勾选该选项后,必须指定校验目录,并且只校验指定目录下的文件内容。

    数据范围

    • 排除下列目录:填写不需要进行数据校验的目录路径,最多支持填写30个路径,路径之间用英文逗号隔开。例如:/root/data,/var。不填则校验所有目录文件。
    • 仅包含下列目录:只对填写的目录文件进行校验。
    须知:
    • 请务必输入正确路径,路径错误或路径下不存在文件时,校验结果中会显示校验文件数量为0。
    • 需要校验的数据量越大,则一致性校验的用时越长,建议仅对关键目录进行校验。
    • 为避免校验数据量过大,以下路径将被默认排除:
      • linux系统的/bin,/boot,/dev,/home,/etc,/lib,/media,/proc,/sbin,/selinux,/sys,/usr,/var,/run,/tmp目录。
      • windows系统的分区根目录,如:c:\,o:\。

      如果默认排除的目录中有需要校验的目录,可以参考修改默认排除的目录进行处理。

    启用复检模式

    只有进行过至少一次一致性校验后,才可以打开复检选项,启用复检将只对上一次校验结果中不一致的文件进行校验。

  3. 配置完成后,单击“确定”,开始增量数据同步并进行数据一致性校验。当同步及校验完成后,可以查看校验结果

修改默认排除的目录

  1. 登录源端服务器。
  2. 打开sms-agent的g-property.cfg配置文件,路径如下:
    • linux系统:.../sms-agent/agent/config/g-property.cfg。
    • windows系统:c:\sms-agent-py*\config\g-property.cfg。
  3. 根据实际需求修改[consistency_check]配置项参数。目录之间用英文逗号","分隔,结尾不加逗号,填写示例如下:
    • linux系统:list_dir_illegal_linux = /bin,/boot,/dev,/home,/etc,/lib,...
    • windows系统:list_dir_illegal_windows = c:\sms-agent-py3,c:\sms-agent-py2,...
  4. 修改完成后,保存配置文件。

跳过数据一致性校验

在开启校验数据一致性功能后,如果想要跳过校验,请按如下步骤操作。

  1. 在迁移服务器列表,单击服务器名称,右侧弹出任务详情窗口。
  2. 任务进展页签,单击数据一致性校验子任务进度条下方的“跳过校验”,单击“确定”,即可跳过数据校验步骤。
    图2 跳过一致性校验

    数据一致性校验进度在5%至95%之间才能进行跳过操作。

查看校验结果

当校验完成后,在任务详情窗口,选择一致性校验结果页签,可以查看一致性校验结果。
图3 查看校验结果

如果校验结果中的校验文件总数为0,表示配置的校验目录路径不存在或该路径下的文件总数为零。

在源端的sms-agent的安装目录下(linux为*/smsagent/agent/logs/;windows为c://sms-agent-py*/logs),会生成一个名为"sms_cmp_result.log"的日志文件,其中包含了所有校验不一致的文件。

校验时间参考

下表为源端仅运行迁移业务的测试时长,仅供参考。

操作系统

系统规格

磁盘性能

校验时长(每100 g数据)

windows

2u4g

5000iops/150mbps

约17分钟

linux

2u4g

5000iops/150mbps

约13分钟

相关文档

网站地图