DM有TiDB处理不了语句时,使用sql-skip、sql-replace都跳不过去

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

  • 【TiDB 版本】:TiDB 3.0.5 DM 1.0.3
  • 【问题描述】:试过下面两种方法都不行。其中使用sql-skip跳过一次后,binlog确实是变化了,但已经试过十几次了,也没成功。使用sql-replace也试过,也没成功。对应的dm-work也重启了,dm-master没有重新过

sql-skip --worker=10.6.221.81:8262 --binlog-pos=mysql-bin|000001.000066:363622013 cop_m1_all_cm

sql-replace --worker=10.6.221.81:8262 --sql-pattern=~(?i)ALTER\s+TABLE\s+cop_m1_cm.UFLO_TASK_PARTICIPATOR\s+ADD\s+CONSTRAINT\s+FKpqe63u3gnbwpjhvf8996md6ip\s+FOREIGN\s+KEY\s+(TASK_ID_)\s+REFERENCES\s+UFLO_TASK(ID_) cop_m1_all_cm ALTER TABLE cop_m1_cm.UFLO_TASK_PARTICIPATOR ADD COLUMN c1 INT NOT NULL

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

您好:

    请尝试使用 binlog event来跳过

通过增加下面的filter,成功跳过。感谢回答! 但比较发奇,通过sql-skip、sql-replace为什么不可以? image

sql-skip 如果无法跳过,建议直接使用 binlog filter 跳过。看起来 sql-skip 那里正则表达式没有匹配导致。而且之前版本的 sql-skip 确实有些问题。

先这样解决,如果下次再出现时,再仔细整理一下。看下怎么能彻底解决

好的,多谢