跳到主要内容

数据校验与订正

简述

本文主要介绍如何使用 CloudCanal 做数据校验和订正。

技术点

逐字段对比

CloudCanal 通过源端数据库扫描数据,批量从对端查出数据,逐字段对比,找出丢失(loss)和差异(diff)数据,记录到日志中。

其中需要解决扫描效率、字段类型兼容、类型精度匹配等问题。

覆盖式订正

采用对端覆盖式订正,对于对端数据源具备 REPLACE 语意的,均可打开订正能力。

所订正的数据为差异数据,即校验任务的校验结果。

一体化

校验和订正作为一个数据任务的两个步骤进行,类似数据同步任务中全量数据初始化和数据同步的关系。

订正步骤可在创建任务时忽略,待校验任务完成后,额外加到任务中来。

重跑

校验和订正任务支持重跑,在订正步骤跑完之后,需要看下效果,可点击重跑按钮再一次执行。

定时执行

校验和订正任务支持定时启动,在完成相应的职能同时,自动记录结果,并清理关联日志。

操作示例

安装 CloudCanal

迁移同步任务创建

  • 任务管理 > 创建任务

  • 选择源和目标数据库,点击下一步 verify_normal_1

  • 选择增量同步,并勾选数据初始化,点击下一步 verify_normal_2

  • 选择同步表、列,点击下一步 verify_normal_3 verify_normal_4

  • 创建任务 verify_normal_5

  • 任务结构迁移、全量迁移、增量同步,正常运行 verify_normal_6

造差异数据

  • 对端数据源删除并修改一些数据 verify_datajob_3

校验订正任务创建

  • 任务详情 > 功能列表 > 创建相似任务 verify_datajob_1

  • 第二步选择数据校验和订正,并勾选校验后订正,其他步骤不需要变动 verify_datajob_2

  • 数据校验和订正任务跑完,并显示状态 verify_datajob_4

  • 重跑数据校验和订正,数据一致 verify_datajob_5

常见问题

目前还存在什么问题?

  • 对于对端多出来的数据,无法进行校验,需要配置一个反向的校验任务解决
  • 对于无主键、时间戳类型表默认忽略校验,前者无法定位到数据,后者因为时间精度差异,导致定位困难
  • 对端数据源如没有实现 REPLACE 能力,则无法开启订正任务
  • 源端表如果没有主键,则无法开启订正任务
  • 校验和订正任务不支持自定义代码

总结

主要介绍使用 CloudCanal 做数据校验和订正,支持校验订正一体化、单次/定时校验和订正等能力。