DM task合并

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:3.0.3 DM v1.0.0
  • 【问题描述】: 现在tidb通过DM同步线上业务库的分库分表,因业务需求,所有表分好几批次同步,建了很多个task来同步,现在已经全库所有表都同步到tidb了,想把这多个task合并为一个task,在不影响同步时效性的情况下有好的操作办法么?

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

你好,

正在分析,请稍等

前提:要确保多个 task 同步任务的 checkpoint 位点相近。

方法一:新建增量同步任务使多个 task 合并(推荐)

  1. 停掉 task 同步任务

  2. 从 dm_meta 中查看多个 task 任务的 checkpoint 位点(注意,该位点非实时更新)

  3. 记录多个 task 同步任务中最小的 checkpoint 、 最大的 checkpoint 位点

  4. 新建 task 配置增量同步

  5. 增量同步起始位点为第 2 步中获取到的最小 checkpoint 点

  6. task 中配置黑白名单,白名单中配置所有需要同步的表

  7. task 中配置 safe-mode 为 true

  8. 开启 task 同步任务

注意:在 safe-mode 为 true 的配置下,同步一段时间后,如果这时的这个合并后的 task 的 checkpoint > 了第 2 步时记录的最大 checkpoint,则可以 stop-task 后把 safe-mode 改回 false 再重新 start-task。

方法二:将新增 task 与原有 task 合并

  1. 停掉 task 同步任务

  2. 从 dm_meta 中查看多个 task 任务的 checkpoint 位点(注意,该位点非实时更新)

  3. 记录多个 task 同步任务中最小的 checkpoint 、 最大的 checkpoint 位点

  4. 修改原有 task 配置

  5. 修改原有 task 中的 xxx_syncer_checkpoint 位点信息,设置为最小的 checkpoint 位点(谨慎修改)

  6. task 配置中增加白名单表

  7. task 配置中设置 safe-mode 为 true

  8. 开启 task 同步任务

注意:在 safe-mode 为 true 的配置下,同步一段时间后,如果这时的这个合并后的 task 的 checkpoint > 了第 2 步时记录的最大 checkpoint,则可以 stop-task 后把 safe-mode 改回 false 再重新 start-task。

1赞