DM复制,主键冲突后,复制失效,怎么恢复

image

在Tidb端插入了一个主键冲突的ID,然后mysql 3306这个端的所有复制就失效,3307还是正常的,怎么恢复呢?


重启后,报了冲突

有人会解决这个问题吗? 类似mysql,跳过GTID

只有个别的冲突,直接dmctl resume task就能跑过去了。

很多冲突,而且冲突的数据量不好评估的。直接开安全模式。

https://docs.pingcap.com/zh/tidb/stable/dm-safe-mode#dm-安全模式

删了这条你手工插入的啊,DM 下游不能做 DML 的

处理冲突,然后恢复任务就可以
tiup dmctl resume task
或是直接skip 跳过处理

tiup dmctl --master-addr  <master-addr>  handle-error <task-name> skip

https://docs.pingcap.com/zh/tidb/stable/handle-failed-ddl-statements#binlog

是什么版本的DM,不同版本操作不一样。不过他都有跳过命令,我是5.3版本 他有个bug就是同步延迟之后会报主键冲突。。直接 resume task 就恢复了

重启后,冲突的数据自动删掉了,复制也恢复了

1 个赞

这个skip,不用指定GTID吗?

dm 不同 b 版本跳过方式还不一样,高版本还可以类似这样跳过:
binlog skip -b mysql-bin.000018:1292 sdata

  • skip:跳过 binlog 位置的 DDL 语句, binlog 位置指定方式参考 -b, --binlog-pos

他给的连接里面写了,要指定的。
个别冲突的直接resume就好了。

因为resume task之后会运行一段时间的安全模式,把insert 改写成replace。这个冲突也就消除了。

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