DM同步报错Duplicate entry

【 TiDB 使用环境】
TiDB: V5.0.3
DM:V2.0.4

【概述】 场景 + 问题概述
场景:通过DM将MySQL的分表数据同步到TiDB的一张表中
MySQL表中有一个自增字段 “id” 的PRIMIKRY KEY , 一个多字段的唯一索引
在TiDB中修改 id 字段为普通 INDEX
问题:历史数据同步没有问题,但是同步到最新的数据时,会报Duplicate entry

具体:
“errors”: [
{
“ErrCode”: 10006,
“ErrClass”: “database”,
“ErrScope”: “not-set”,
“ErrLevel”: ”high",
“Message”: “startLocation : [position: (, 0), gtid-set:] , endLocation [postion: (mysql-bin.000482,605623513), gtid-set: xxxxxxxx]: execute statement failed : UPDATE xxxxxxx”,
“RawCause”: “Error 1062: Duplicate entry ‘xxxxxx’ for key ‘xxxxxx’”,
“Workaround”: “”
}
“”:

重新同步过几次,每次都是这样,每次都是同步到最新的数据时就报错,报Duplicate entry

设置safe-mode: true

syncers: # sync 处理单元的运行配置参数
global: # 配置名称
safe-mode: true # 设置为 true,则将来自数据源的 INSERT 改写为 REPLACE,将 UPDATE 改写为 DELETE >与 REPLACE,保证在表结构中存在主键或唯一索引的条件下迁移数据时可以重复导入 DML。在启动或恢复增量复制任务的
前 1 分钟内 TiDB DM 会自动启动 safe mode
worker-count: 32

谢谢,配置此参数,已解决问题

设置 safe-mode 参数会有一定的性能损耗,建议还是排查下主键冲突的原因吧。
可以参考下这篇文档 常见问题排查之 -- DM 主键冲突的原因及排查思路

收到,谢谢

请问,我也遇到这个问题,已经存在的同步任务能修改这个参数么,我没看到这个修改入口

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