dm同步 过滤表问题

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】tidb4.07 dm2.0

【问题描述】你好 我这边发现block-allow-list: 过滤无效
第一个图为我的dm配置

第二个图为报错内容

我这个任务 只有bsn_business 这一个表 ,现在上游传来了一个新ddl goodcang_toms._stm_shippercurrent_new。因为是armscii8 所以报错,
但是奇怪的是 我下游并只有bsn_business 这个表,为什么会去解析这个ddl 导致报错。

谢谢回复

而且 我用skip跳过 也跳不过去

:grin:

  1. DM 2.0 麻烦参考这个文档,看下能否跳过 https://docs.pingcap.com/zh/tidb-data-migration/stable/handle-failed-ddl-statements#处理出错的-ddl-语句
  2. 和您再确认下,疑问是为什么会执行不在 block-allow-list 中表的 DDL 语句对吧?

1 为什么去执行不在 block-allow-list 中表的 DDL
2 跳不过这个ddl

  1. query-status
  2. handle 命令处理
  3. query-status 再查一次
    麻烦把过程多记录下,反馈,不能跳过是报错还是什么说清楚。

下次 碰到了 再复现一次 ,现在是handle 后 ,没有动静 错误还是依旧

  1. 麻烦按照上面的答复,每一步都展示下,多谢。
  2. 执行handle 后的日志也发一下,多谢。

你好 我这边是用pt工具加索引 下游tidb也会报错

因为我tidb 不需要创建上游的索引。所以我配置了过滤

然后我配置了online-ddl-scheme: “pt” ,现在发现加字段是没有问题的,但是加用pt加索引 ,会报错 如下
上游dba 执行 (数据量较大:ALTER TABLE orders ADD INDEX idx_fab_status(is_fba, order_status) USING BTREE; 使用 PT 操作)

可以把配置任务的所有yaml文件发出来 , 可能上面block-allow-list配置是不是漏掉了什么

gc_owms.yaml (33.5 KB)
完整的配置文件 应该是没有问题的 block-allow-list是配置了orders的表的。运行好久 都没有问题的。
image

配置文件 下载看下 麻烦了

这边测试了 如果不配置过滤dm 创建索引操作 。就不会报错。 请问这种 应该怎么解决 ,因为我下游tidb是不需要这些上游mysql创建索引的,

请问你配置这个后是否有重启 task?没重启不会生效的。可以从日志里面确认下 是否生效了。

生效了


我这边用了个测试任务 也是一样的, 如果不配置过滤dm 创建索引操作 。就不会报错 ,

如果过滤用pt加索引 就会报错。

在block-allow-list中没有_stm_shippercurrent_new表,其实报错是提示的parser解析失败,现在worker没识别到。可以用skip进行跳过ddl的。

handle-error test skip

然后如果想排除该表,在dm2.0.2可以在datasource源进行filter将表排除掉。

你好 你的_stm_shippercurrent_new 应该是使用pt工具, 会去创建的和block-allow-list没有关系,
使用 handle-error test skip 跳过应该是不对的 ,这样上游每次使用pt加索引 下游都会报错。