数据校验

数据迁移是一个非常常见的场景,而数据的准确性将会直接影响业务,所以数据迁移前后是否能保持一致就显得尤为关键。CMH为用户提供了针对多种数据源(数据库类型/对象存储类型)的多种校验方式,以确保源端与目标端数据的一致性。本文介绍数据校验功能的使用流程,帮助您快速掌握如何使用数据校验的功能。

1、业务流程简介

数据校验功能的使用流程大致分为以下几个步骤:

第一步:安装agent。在数据校验时,需要探查到源端和目标端的数据进行比较,考虑到数据的敏感性,CMH的数据校验需要客户提供一台服务器(建议是阿里云ECS),确保该服务器与源端和目标端数据源是联通的,之后在改服务器上安装一个数据校验的agent,用于进行后续的校验。

第二步:配置数据源及验证计划。在实际的场景中,往往用户并不是想校验某个数据源下所有的数据,所以需要用户自定义校验的范围以及校验的方式。完成之后选择合适的agent进行校验。

第三步:发起校验。将验证任务置完成之后,用户可以在页面上向该任务对应的agent发起校验的指令,agent校验完成之后会自动上报验证结果,用户无需其他操作,等待验证完成即可。

第四步:查看结果。agent将结果返回之后,用户在CMH控制台可以看到验证的结果及详情。

通过上述步骤,能够白屏化的对源端和目标端之间的数据进行一致性校验,确保数据的一致性,保障割接的顺利完成。

2、数据校验应用场景

2.1 适用场景

CMH提供高效轻量化数据校验能力,为数据库及对象存储系统的迁移验证场景设计。该解决方案可在数据迁移完成后,通过抽样验证机制,校验源端与目标端数据是否一致,从而保证业务的稳定性。特别是在系统割接窗口期,支持在停机完成后的关键时段快速执行验证操作,为数据迁移质量提供实时保障。

  • 校验时机建议

    为确保验证结果的准确性,建议在以下条件达成后启动验证流程:

    • 源端与目标端的迁移任务已完全终止

    • 增量同步/迁移任务已完成

  • 注意事项

    在数据迁移仍处于进行状态时(包括但不限于全量迁移、增量同步等阶段),由于源端与目标端数据可能持续发生变化,此时执行验证操作可能导致:

    • 验证结果偏差

    • 数据一致性误判

    • 迁移进程干扰

CMH通过轻量化的数据校验算法,在保证验证精度的同时也降低了资源消耗,为关键业务系统的数据迁移提供可靠的质量保障,助力企业实现平滑、安全的数据迁移。

2.2 支持产品以及验证方法

数据库:

支持的产品

Count

TopN

SumX

CheckSum

ObjectStore

MySQL

获取Tablerow数量

获取Table的前nrow并比较

获取Table的指定字段的和

获取Table的校验和

暂不支持

Redis

给定key, 对value利用其size做校验。

给定key, 对value中的N个属性做比较

抽样/选定一定数量(100)个key,比较源端和目标端的value

暂不支持

暂不支持

MongoDB

获取Collectiondocument数量

获取Collection的前ndocument并比较

获取Collection的指定字段的和

暂不支持

暂不支持

ElasticSearch

获取Index中的document数量

获取Index的前ndocument并比较

暂不支持

暂不支持

暂不支持

说明

Redis有序结构利用topN做抽样校验,无序结构用Size做比较。

对象存储:

支持的产品

ListObject

ContentCheck

Inventory

阿里云-OSS

bucket下面所有的object的名字和size(单位为byte)进行比较

根据在线迁移服务生成的报告,对其中每个object进行MD5校验。

通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。

华为云-OBS

bucket下面所有的object的名字和size(单位为byte)进行比较

根据在线迁移服务生成的报告,对其中每个object进行MD5校验。

通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。

AWS-S3

bucket下面所有的object的名字和size(单位为byte)进行比较

暂不支持

通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。

腾讯云-COS

bucket下面所有的object的名字和size(单位为byte)进行比较

根据在线迁移服务生成的报告,对其中每个object进行MD5校验。

通过生成的Inventory清单进行比较,不一致的object会通过getObject进行二次校验。

3、数据校验操作步骤

3.1 License申请与查看

在云迁移中心页面,依次点击迁移能力->数据校验进入产品界面,首次进入会看到使用引导,第一步为License申请,点击申请License按钮,会自动生成一个License。申请License是为了防止Agent被滥用,起到保护Agent的作用。image

之后,可以看到license以及过期时间(默认有效期为90天),可以在弹窗中对License进行复制。

image

3.2 Agent管理

License申请完成后,需要进行数据校验Agent的部署,需要您提供一台或多台ECS来供CMH进行Agent的部署,具体ECS数量请根据实际情况进行评估

操作系统建议:CentOS,Alibaba Cloud linux

网络要求:创建的ECS需要和数据源网络打通

CMH提供了三种不同的部署模式,下面是三种部署模式的具体说明:

说明
  1. 如果使用的是阿里云上ECS,且ECS安装有云助手(阿里云创建的ECS默认就有云助手),建议使用自动部署方式进行Agent安装;

  2. 如果非阿里云ECS,但和阿里云VPC打通,或者虽然是阿里云ECS但机器未安装或由于某些原因安装不成功云助手,建议使用手动部署-私网连接方式部署Agent。

  3. 如果非阿里云ECS,且网络未打通,但有公网IP的,建议使用手动部署-公网连接方式部署Agent。

3.2.1 自动部署

目前,支持自动部署的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。

注意:

  • 自动部署只支持阿里云创建的ECS。

  • 安装前请先开通私网连接服务。

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

准备好ECS后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“自动部署”,依次填写Agent名称、选择地域、选择ECS,完成后,点击提交,CMH会自动完成数据校验Agent的部署流程。

image

部署过程中,可以看到Agent的部署过程。

image

部署完成后,可以在Agent列表看到部署的Agent。

image

注意:

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

3.2.2 手动部署

3.2.2.1 公网手动部署

注意:

  • 公网方式部署的跳板机可以是任意平台或者IDC的机器,只需要CMH可以公网访问。

准备好机器后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“手动部署”,依次填写Agent名称、选择公网、填写IP和端口,完成后,点击下一步。image

在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成AgentECS的部署。

image

部署完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。

image

建立连接过程可以在线查看

image

部署完成后,可以在Agent列表看到部署的Agent。

3.2.2.2 私网手动部署

私网手动部署,支持的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。

注意:

  • 私网手动部署的跳板机可以是阿里云或非阿里云机器,但需要VPC打通。

  • 安装前请先开通私网连接服务。

准备好ECS后,点击Agent管理进入Agent的安装页面

image

点击Agent安装开始安装Agent流程。image

安装方式选择“手动部署”,依次填写Agent名称、选择私网、选择地域,选择VPC,填写IP和端口,完成后,点击下一步

image

在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成AgentECS的部署。

image

安装完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。

image

建立连接过程可以在线查看

image

部署完成后,可以在Agent列表看到部署的Agent。

注意:

  • 通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。

3.2.3 Agent操作

3.2.3.1 停止

自动部署的Agent,状态为在线时,可以通过点击停止按钮,来关停该Agent。

image

停止后,ECSAgent会被停止,列表状态为停止,停止状态的Agent不可以执行校验任务。image

3.2.3.2 启动

停止状态的Agent,可以通过点击启动按钮,来启动该Agent。

image启动后,Agent状态变为在线。

3.2.3.3 删除

不再使用的Agent,可以在Agent列表进行删除。

image

3.2.3.4 重连与复制启动命令

手动部署的Agent,在Agent的断连后,Agent状态会被置为离线,可以点击复制启动命令,将命令在ECS上执行之后,点击重连,使CMHAgent重新建立连接。

image

重连之后,Agent的状态为在线。

image

3.3 创建验证计划

3.3.1 新建验证计划

说明

由于篇幅原因,文档以OSS为例。其余的验证对象的不同验证方法以控制台为准。

完成agent启动和连接网络之后,点击新建验证计划按钮,填写基本信息完成割接计划的创建。

image根据不同的数据源类型填写完成后,测试数据源联通性正常之后,点击确认按钮即可开始进行数据源的解析。

image

说明

这里只给出了源端数据源信息,如果需要进行源端与目标端之间的校验,还需要增加目标端数据源信息。

等待数据源解析完成后,验证计划创建完毕。

image

3.3.2 创建校验任务

点击计划名称进入目标计划的详情页。

image

之后可以看到agent的信息(当前同一个验证计划只支持一个agent)。点击新建任务按钮,进行校验任务的创建。

image

进行表单填写后点击下一步按钮,根据刚刚填写的数据源信息选择需要校验的对象。根据不同的校验方式填写表单,点击下一步。

image

之后填写完表单内容之后,再点击下一步。image

最后确认验证范围无误之后,点击确认,创建验证任务。image

3.3.3 发起校验任务

校验任务创建完成后,可以点击发起验证按钮直接发起所有校验任务。同时也支持勾选后,点击批量发起验证按钮进行部分任务的发起。

点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。

image

点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。

若发现执行结果不符合预期,支持数据订正之后,点击重新运行任务按钮,重新发起校验。

3.3.4 切换Agent

如果想要切换该验证计划对应的Agent,点击Agent列表的编辑,选择需要的Agent,点击确定。(当前同一个验证计划仅支持单Agent,如果选择多个Agent会报错)

image

新的Agent会去校验和当前验证计划对应的数据源的联通性,校验无误后,切换Agent完成。image