dm 增量同步 stop 再 start ,task 配置的pos 起始点确定

【概述】 场景 + 问题概述

目前我暂停增量后:
“totalEvents”: “42010508”,
“totalTps”: “38895”,
“recentTps”: “281”,
“masterBinlog”: “(mysql-bin.000010, 471199279)”,
“masterBinlogGtid”: “0-2-1972379”,
“syncerBinlog”: “(mysql-bin.000009, 882028156)”,
“syncerBinlogGtid”: “”,
如果我stop再start, 新的task配置要使用yncerBinlog": "(mysql-bin.000009, 882028156)这个位置吗?


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

stop 不是暂停,是停止了,如果要start 就是重新建立新的任务… 位置会变了
pause,这个是暂停…
resume 是恢复

https://docs.pingcap.com/zh/tidb-data-migration/stable/resume-task

1赞

如果同步过程出现问题,我想跳过或者回放,是否pause task,再修改task-file,指定新的点位信息,再重新resume就可以从刚指定的POS上继续进行同步?

不会的。

这个可以看下,下游有一个 dm_meta 库里面存放 checkpoint 的信息,如果你 pause 在 resume 任务时,是根据 dm-meta 库中记录的 checkpoint 位点开始进行数据同步的。

目前来说,如果是 DDL 报错,2.0 可以使用 handle-error 跳过错误的 DDL,1.0 版本用的是 sql-skip
如果是 DML 报错,建议还是要查一下报错的原因, 不然跳过 DML 会有数据丢失的风险。
另外一个场景希望回放某个点的 binlog,修改的是下游 dm_meta 库中的 checkpoint 位点信息才对,但是要注意主键冲突的情况哈,换句话说,dm_meta 中的 checkpoint 信息比 task-file 中的 pos/GTID 优先级更高。

1赞

总结一下:
1、pause task,修改下游checkpoint表中的点位信息。
2、start task,实现回放或跳过(根据点位信息)。
3、注意丢失数据的风险。