【BUG?】DM迁移数据,没有出错,但目标库没有数据

查询一下结果看看

query-status 命令的查询结果、任务状态与子任务状态。

是啊,但是没有数据。

贴子问题里面有写

咦,奇怪,你把test.k这个表挪到test1.k,DM配置文件里的值也改成test1.k试下。我也做过类型的任务,是支持多个库的正则的

建议把router,和filter都加上,别默认了。一开始可以搞的简单点就配一个库,看是否能同步。
再不行就照搬文档里面的配置。
bug的可能性很低,因为太基础。

dm排查的难度,不是一个环境真的很难。全链路任何一个点有问题。都会导致不能同步。

1 个赞

我试了这种写法是可以的

数据能迁移成功吗?

能迁移成功

不能吧?`do-dbs: [“clover”,“db01”]
do-tables: # 需要迁移的上游表的白名单。

  • db-name: “test” # 需要迁移的表的库名。
    tbl-name: “k” # 需要迁移的表的名称。

迁移 “clover”,"db01"这两个全库。。test库下的k表。`

clover、db01、test.k都迁移成功?

我试了你上面的配置,不行,也没有任何错误,用以下的配置是可以的

block-allow-list:
  bw-rule-1:                              # 名称
    do-dbs: ["db01","clover","test"]
    do-tables:                        # 需要迁移的上游表的白名单。
    - db-name: "test"              # 需要迁移的表的库名。
      tbl-name: "k2"          # 需要迁移的表的名称。
    - db-name: "db01"
      tbl-name: "*"
    - db-name: "clover"
      tbl-name: "*"

结论出来了。dm还是有bug

do-dbs与do-tables不能同时出现。否则只有do-tables生效。你上面的这种写法相当于没有do-dbs。

这几天我一直想搞清楚这个规则是啥,你部署worker的时候把log-level: debug或者edit-config,会打印block_allow_list的信息如下:

[2023/09/06 00:03:17.702 +08:00] [DEBUG] [block_allow_list.go:12] ["start to filter databases"] [task=testdm] [unit=dump]
[2023/09/06 00:03:17.702 +08:00] [DEBUG] [block_allow_list.go:23] ["ignore database"] [task=testdm] [unit=dump] [databases="[db1,information_schema,mysql,performance_schema,test]"]
[2023/09/06 00:03:17.770 +08:00] [DEBUG] [block_allow_list.go:33] ["start to filter tables"] [task=testdm] [unit=dump]
[2023/09/06 00:03:17.770 +08:00] [DEBUG] [block_allow_list.go:55] ["ignore table"] [task=testdm] [unit=dump] [tables="tables list\n\nschema hhm :[b, t1, t2, t3, t4, ]"]

你这个结论不对呀。
可以参考下这里。 https://docs.pingcap.com/zh/tidb/v7.3/dm-block-allow-table-lists#过滤规则

黑白名单过滤是先 schema 再 table 过滤的。

文档与我们正常的理解一致,也符合正常思路。但实验结果不是这么回事。你可以实验 一下。