在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 天后被自动关闭。不再允许新回复。