dm 如何过滤表整理语句

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
tidb 5.1

dm 2.0

【概述】 场景 + 问题概述
上游 每日执行 alter table xxx engine = innoDB ;

下游报错
“Message”: “startLocation: [position: (mysql-bin.001367, 98668878), gtid-set: ], endLocation: [position: (mysql-bin.001367, 98669095), gtid-set: ], origin SQL: [RENAME TABLE vmc.t_promotion_original TO vmc._t_promotion_original_old, vmc._t_promotion_original_new TO vmc.t_promotion_original]: cannot track DDL: ALTER TABLE vmc.t_promotion_original ENGINE = InnoDB”,
“RawCause”: “[ddl:8200]This type of ALTER TABLE is currently unsupported”,

问题主要发生在
cannot track DDL: ALTER TABLE vmc.t_promotion_original ENGINE = InnoDB"

请问如何过滤 “alter table xxx engine = innoDB” 语句


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

2 个赞

配置下过滤就可以了

https://docs.pingcap.com/zh/tidb-data-migration/stable/task-configuration-guide#配置需要过滤的操作

2 个赞

你好,我知道能过滤,但不希望把所有的alter table 给过滤掉,但这个语句起头就是“ALTER TABLE”。

2 个赞

那就按库和按表配置啊,跳过某个表的这个动作就好了啊

2 个赞

你好,我的意思是,禁止掉“ ALTER TABLE vmc . t_promotion_original ENGINE = InnoDB”,但不是 ALTER TABLE vmc . t_promotion_original add index/column等操作。 这个需求的filters怎么写?events 怎么写?

1 个赞

收到你的需求了,CTC 的小伙伴要尝试做个 sample,你要稍等下了

1 个赞

好的,谢谢

1 个赞

请问你是使用 PT 工具执行的 ddl 吗 ?

这次的错误是 TiDB 不支持的语句,可以使用 handle-error 过滤掉 https://docs.pingcap.com/zh/tidb-data-migration/dev/handle-failed-ddl-statements#handle-error

如果后续有类似的不支持语句,建议在 binlog filter 中过滤掉,可以参考下面的例子
正则表达式如何使用可以看下这个 Syntax · google/re2 Wiki · GitHub

filter-rule-1:
     schema-pattern: "*"
     sql-pattern: ["^alter\\s+(?i)table\\s+(?i)vmc.t_promotion_original\\s+(?i)ENGINE"]
     action: Ignore
3 个赞

了解了 ,谢谢

2 个赞

另外方便确认下 DM 是哪个版本吗?

如果是 低于 2.0.3 建议先升级再解决报错问题~

2.0.3 修复了 一个问题 https://docs.pingcap.com/zh/tidb-data-migration/stable/2.0.3

  • 修复 online DDL 被配置的 binlog event 过滤时同步中断的问题 #1668
1 个赞

:joy:

想确认dm版本但是tiup 没有网络环境报错了 ,开了个ask

1 个赞

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