有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

数据一致性校验,即 DTS 对数据迁移的源库和目标库的表数据进行对比,并给出对比结果和不一致详情,方便用户快速确定业务的割接时间。数据一致性校验任务是独立进行的,不会影响源数据库的正常业务,也不会影响 DTS 的任务。
数据一致性校验任务可以采用自动触发形式,也可以采用手动创建形式。
自动触发,在配置迁移任务时,数据一致性检查勾选了全量检查迁移对象,则后续任务进行到同步增量步骤时自动触发一次一致性校验任务。
手动创建,在 DTS 任务步骤进行到同步增量时,手动创建一致性校验任务,支持多次创建。

注意事项

数据一致性校验的范围,仅对比源数据库选择的对象和迁移到目标数据库的对象,如果用户在迁移过程中向目标库进行数据写入,则这部分数据不包含在校验范围内。
数据一致性校验任务可能会增加源数据库实例的负载,因此请在业务低峰期进行操作。
数据一致性校验的任务可以多次创建并执行,但同一时刻只能有一个校验任务处于“运行中”,即上一个校验任务结束或者终止后,下一个校验任务才能启动。
如果在数据一致性校验任务还未结束时,用户选择完成或者终止 DTS 任务,则数据一致性校验任务会失败。
因为一致性校验需要在源数据库中创建新库 __tencentdb__,并在该库下写入 CheckSum 表,所以源数据库为只读时将会跳过一致性校验。

约束限制

当前校验任务对 DDL 操作不感知,如果在迁移过程中,用户对源库做了 DDL 操作,会出现校验结果不一致,需要用户重新发起校验任务才能得到准确的对比结果。

校验方案

DTS 校验对比数据包含全量迁移的数据及其迁移过程中源端又新增的增量迁移数据。全量数据校验逐行对比源端与目的端的数据,增量数据校验线程一旦发现全量数据对比完成,立即进入增量数据校验阶段,获取全量数据开始时的时间戳(全量数据开始时会同步拉取增量日志),循环获取源端增量的操作日志 Oplog,对比源端和目的端差异。当目的端与源端数据对比落后小于10s后结束对比,输出校验结果。




自动触发一致性校验任务

数据迁移任务设置迁移选项及选择迁移对象页面,数据一致性检查勾选全量检查迁移对象,当后续任务进行到同步增量步骤时自动触发一次一致性校验任务。
说明:
自动触发一致性校验任务,默认会发起全量数据的内容校验和所有数据库信息校验,如需筛选校验对象,请选择手动创建一致性校验任务。


手动创建一致性校验任务

1. 登录 DTS 控制台
2. 数据迁移页面,选择需要校验的迁移任务,在操作列选择更多 > 创建数据一致性校验


3. 单击创建数据一致性校验
说明:
数据一致性校验需要在 DTS 任务步骤进行到同步增量时,才可以创建。如果界面按钮呈灰色,则 DTS 任务状态不满足条件,如任务未进行到同步增量步骤、任务失败、任务终止。

4. 在弹出的对话框中,单击确定

5. 配置数据一致性校验参数后,单击创建并启动一致性校验
校验对象:支持选择全部迁移对象,或者自定义选择
数据库信息:支持校验索引片键库表信息。源库和目标库都为分片集群时,支持选择片键进行校验。
数据校验:行数校验,即对源库和目标库的数据行数进行对比;内容校验,即对源库和目标库的数据内容进行对比。
抽样对比:选择内容校验时,支持抽取一定比例的数据进行对比,因为对一些数据量较大的场景,抽取全部数据校验可能会增加源库的负载,请用户根据业务情况选择抽样配比。


查看数据一致性校验结果

1. 在迁移任务首页,最后一次校验结果列,可查看校验结果,一致或者不一致,单击查看更多进入校验详情页。
2. 单击查看,即可查看校验结果。

校验一致的结果示例:

校验不一致的结果示例:
说明:
1. 针对不一致性的结果,需要用户根据提示,手动确认源数据库和目标数据库的对应数据内容。
2. MongoDB 行数校验是通过 db.collection.estimatedDocumentCount() 或 db.collection.stats() 采集元数据中的行数进行对比,其在特定情况下可能和实际行数有出入:如预期外的实例停机,或者孤儿文档都会造成不一致。更多不一致情况的处理,请参考 常见一致性校验问题