数据迁移是一个非常常见的场景,而数据的准确性将会直接影响业务,所以数据迁移前后是否能保持一致就显得尤为关键。CMH为用户提供了针对多种数据源(数据库类型/对象存储类型)的多种校验方式,以确保源端与目标端数据的一致性。本文介绍数据校验功能的使用流程,帮助您快速掌握如何使用数据校验的功能。
1、业务流程简介
数据校验功能的使用流程大致分为以下几个步骤:
第一步:安装agent。在数据校验时,需要探查到源端和目标端的数据进行比较,考虑到数据的敏感性,CMH的数据校验需要客户提供一台服务器(建议是阿里云ECS),确保该服务器与源端和目标端数据源是联通的,之后在改服务器上安装一个数据校验的agent,用于进行后续的校验。
第二步:配置数据源及验证计划。在实际的场景中,往往用户并不是想校验某个数据源下所有的数据,所以需要用户自定义校验的范围以及校验的方式。完成之后选择合适的agent进行校验。
第三步:发起校验。将验证任务置完成之后,用户可以在页面上向该任务对应的agent发起校验的指令,agent校验完成之后会自动上报验证结果,用户无需其他操作,等待验证完成即可。
第四步:查看结果。agent将结果返回之后,用户在CMH控制台可以看到验证的结果及详情。
通过上述步骤,能够白屏化的对源端和目标端之间的数据进行一致性校验,确保数据的一致性,保障割接的顺利完成。
2、数据校验应用场景
2.1 适用场景
CMH提供高效轻量化数据校验能力,为数据库及对象存储系统的迁移验证场景设计。该解决方案可在数据迁移完成后,通过抽样验证机制,校验源端与目标端数据是否一致,从而保证业务的稳定性。特别是在系统割接窗口期,支持在停机完成后的关键时段快速执行验证操作,为数据迁移质量提供实时保障。
校验时机建议
为确保验证结果的准确性,建议在以下条件达成后启动验证流程:
源端与目标端的迁移任务已完全终止
增量同步/迁移任务已完成
注意事项
在数据迁移仍处于进行状态时(包括但不限于全量迁移、增量同步等阶段),由于源端与目标端数据可能持续发生变化,此时执行验证操作可能导致:
验证结果偏差
数据一致性误判
迁移进程干扰
CMH通过轻量化的数据校验算法,在保证验证精度的同时也降低了资源消耗,为关键业务系统的数据迁移提供可靠的质量保障,助力企业实现平滑、安全的数据迁移。
2.2 支持产品以及验证方法
数据库:
支持的产品 | Count | TopN | SumX | CheckSum | ObjectStore |
MySQL | 获取Table的row数量 | 获取Table的前n个row并比较 | 获取Table的指定字段的和 | 获取Table的校验和 | 暂不支持 |
Redis | 给定key, 对value利用其size做校验。 | 给定key, 对value中的N个属性做比较 | 抽样/选定一定数量(100)个key,比较源端和目标端的value | 暂不支持 | 暂不支持 |
MongoDB | 获取Collection的document数量 | 获取Collection的前n个document并比较 | 获取Collection的指定字段的和 | 暂不支持 | 暂不支持 |
ElasticSearch | 获取Index中的document数量 | 获取Index的前n个document并比较 | 暂不支持 | 暂不支持 | 暂不支持 |
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的作用。
之后,可以看到license以及过期时间(默认有效期为90天),可以在弹窗中对License进行复制。
3.2 Agent管理
License申请完成后,需要进行数据校验Agent的部署,需要您提供一台或多台ECS来供CMH进行Agent的部署,具体ECS数量请根据实际情况进行评估。
操作系统建议:CentOS,Alibaba Cloud linux
网络要求:创建的ECS需要和数据源网络打通
CMH提供了三种不同的部署模式,下面是三种部署模式的具体说明:
如果使用的是阿里云上ECS,且ECS安装有云助手(阿里云创建的ECS默认就有云助手),建议使用自动部署方式进行Agent安装;
如果非阿里云ECS,但和阿里云VPC打通,或者虽然是阿里云ECS但机器未安装或由于某些原因安装不成功云助手,建议使用手动部署-私网连接方式部署Agent。
如果非阿里云ECS,且网络未打通,但有公网IP的,建议使用手动部署-公网连接方式部署Agent。
3.2.1 自动部署
目前,支持自动部署的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。
注意:
自动部署只支持阿里云创建的ECS。
安装前请先开通私网连接服务。
通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。
准备好ECS后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程。
安装方式选择“自动部署”,依次填写Agent名称、选择地域、选择ECS,完成后,点击提交,CMH会自动完成数据校验Agent的部署流程。
部署过程中,可以看到Agent的部署过程。
部署完成后,可以在Agent列表看到部署的Agent。
注意:
通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。
3.2.2 手动部署
3.2.2.1 公网手动部署
注意:
公网方式部署的跳板机可以是任意平台或者IDC的机器,只需要CMH可以公网访问。
准备好机器后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程。
安装方式选择“手动部署”,依次填写Agent名称、选择公网、填写IP和端口,完成后,点击下一步。
在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成Agent在ECS的部署。
部署完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。
建立连接过程可以在线查看
部署完成后,可以在Agent列表看到部署的Agent。
3.2.2.2 私网手动部署
私网手动部署,支持的地域有杭州、上海、张家口、深圳、乌兰察布,如有其他地域的部署需求,请通过售后在线联系我们。
注意:
私网手动部署的跳板机可以是阿里云或非阿里云机器,但需要VPC打通。
安装前请先开通私网连接服务。
准备好ECS后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程。
安装方式选择“手动部署”,依次填写Agent名称、选择私网、选择地域,选择VPC,填写IP和端口,完成后,点击下一步
在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成Agent在ECS的部署。
安装完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。
建立连接过程可以在线查看
部署完成后,可以在Agent列表看到部署的Agent。
注意:
通过私网连接打通网络会在用户的账号下创建反向终端节点,可能会产生费用,使用完成之后需要用户手动释放。
3.2.3 Agent操作
3.2.3.1 停止
自动部署的Agent,状态为在线时,可以通过点击停止按钮,来关停该Agent。
停止后,ECS上Agent会被停止,列表状态为停止,停止状态的Agent不可以执行校验任务。
3.2.3.2 启动
停止状态的Agent,可以通过点击启动按钮,来启动该Agent。
启动后,Agent状态变为在线。
3.2.3.3 删除
不再使用的Agent,可以在Agent列表进行删除。
3.2.3.4 重连与复制启动命令
手动部署的Agent,在Agent的断连后,Agent状态会被置为离线,可以点击复制启动命令,将命令在ECS上执行之后,点击重连,使CMH与Agent重新建立连接。
重连之后,Agent的状态为在线。
3.3 创建验证计划
3.3.1 新建验证计划
由于篇幅原因,文档以OSS为例。其余的验证对象的不同验证方法以控制台为准。
完成agent启动和连接网络之后,点击新建验证计划按钮,填写基本信息完成割接计划的创建。
根据不同的数据源类型填写完成后,测试数据源联通性正常之后,点击确认按钮即可开始进行数据源的解析。
这里只给出了源端数据源信息,如果需要进行源端与目标端之间的校验,还需要增加目标端数据源信息。
等待数据源解析完成后,验证计划创建完毕。
3.3.2 创建校验任务
点击计划名称进入目标计划的详情页。
之后可以看到agent的信息(当前同一个验证计划只支持一个agent)。点击新建任务按钮,进行校验任务的创建。
进行表单填写后点击下一步按钮,根据刚刚填写的数据源信息选择需要校验的对象。根据不同的校验方式填写表单,点击下一步。
之后填写完表单内容之后,再点击下一步。
最后确认验证范围无误之后,点击确认,创建验证任务。
3.3.3 发起校验任务
校验任务创建完成后,可以点击发起验证按钮直接发起所有校验任务。同时也支持勾选后,点击批量发起验证按钮进行部分任务的发起。
点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。
点击发起任务后,任务的状态会置为验证中,等待后刷新页面即可观察到任务的执行结果。
若发现执行结果不符合预期,支持数据订正之后,点击重新运行任务按钮,重新发起校验。
3.3.4 切换Agent
如果想要切换该验证计划对应的Agent,点击Agent列表的编辑,选择需要的Agent,点击确定。(当前同一个验证计划仅支持单Agent,如果选择多个Agent会报错)
新的Agent会去校验和当前验证计划对应的数据源的联通性,校验无误后,切换Agent完成。