为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 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 个赞
xfworld
(魔幻之翼)
2
2 个赞
你好,我知道能过滤,但不希望把所有的alter table 给过滤掉,但这个语句起头就是“ALTER TABLE”。
2 个赞
xfworld
(魔幻之翼)
4
那就按库和按表配置啊,跳过某个表的这个动作就好了啊
2 个赞
你好,我的意思是,禁止掉“ ALTER TABLE vmc
. t_promotion_original
ENGINE = InnoDB”,但不是 ALTER TABLE vmc
. t_promotion_original
add index/column等操作。 这个需求的filters怎么写?events 怎么写?
1 个赞
xfworld
(魔幻之翼)
6
收到你的需求了,CTC 的小伙伴要尝试做个 sample,你要稍等下了
1 个赞
小王同学Plus
(小王同学 Plus)
8
请问你是使用 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 个赞
小王同学Plus
(小王同学 Plus)
10
另外方便确认下 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 个赞
想确认dm版本但是tiup 没有网络环境报错了 ,开了个ask
1 个赞
system
(system)
关闭
12
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。