dm sync 阶段,报错Duplicate entry

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

  • 【TiDB 版本】:v4.0.0-rc.1 / v1.0.4-hotfix
  • 【问题描述】:同步了两个多月了,今天凌晨修改purge之后,下午出现主键重复的错误

都是单表同步单表,没有分库分表和多个上游表映射一个下游表的问题

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

你好,

确认几个问题

  1. 通过 dm-worker 日志检查 remove-meta 是否为 true,(如果之前设置过 true,task 文件改为了 false, 但是没有重启 dm-woker 进程,dm 将缓存该参数为 true)。
  2. 重启 task 之后会进行 5min 的 safe_mode 模式,如果时长不够,可以尝试在 task 文件中修改该参数,知道数据正常跑过去。

1 日志里显示remove-meta 为 false,但是不确定之前是什么。

2 safe_mode时长是怎么配置的,文档里好像没有这个。

这个任务数据量不是很多,通过删除meta,relay_log以及相关表,重启worker节点,重新部署任务暂时解决了

额,比较暴力哈,不是很多推荐,那样如果几个 TB 的数据可能要恢复很久,

可以一直开着 safe_mode 同步一段时间,再将其关掉。

dm-woker 启动日志搜索 remove-meta 即可。

:joy:

DM改了东西是都要重启相应worker的吧

我每次都是只重启了task

此类比较典型的错误在文档的 FAQ 有一些记录

只需要重启任务就行

https://pingcap.com/docs-cn/tidb-data-migration/stable/error-handling/#relay-处理单元报错-event-from--in--diff-from-passed-in-event--或同步任务中断并包含-get-binlog-error-error-1236-hy000--binlog-checksum-mismatch-data-may-be-corrupted-等-binlog-获取或解析失败错误

好的,谢谢大佬了:100:

:handshake:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。