使用DM是否可以实现将表从mysql的a库迁移至TiDB的b库

【 TiDB 使用环境】测试环境
【 TiDB 版本】5.4.0
【遇到的问题】想将MySQL中A库的某些表,同步至TiDB的B库,配置routes后发现并没有同步成功,日志中无报错,应当是自己配置出的问题。感觉是可以实现的,但是不知道应该如何配置
【具体配置】


上图为我做的配置,各位大佬帮忙看一下吧,感谢~

DM就是用于同步mysql数据,完整配置文件,和操作步骤发下

应该是你的表名格式写错了,改这样试试:
block-allow-list:
  global:
    do-tables:
    - db-name: "a"
      tbl-name:"table_01"
    - db-name: "a"
      tbl-name:"test_[0-9]"
1 个赞

block-allow-list 的 tbl-name 写法似乎有问题,这样写,DM 只同步一张名叫 “table_01,test_[0-9]"的表。。要并列写两张表,不可以用逗号分隔。

block-allow-list 中每一项都可以用通配符表达,比如:“migrate_table_0*” 代表同步以 “migrate_table_0“ 开头的所有表;也可以用正则表达式:”~migrate_table_0[0-9]",在字符串前面加上 “~” 就代表这是一个正则表达式。

FYI: https://docs.pingcap.com/zh/tidb/stable/dm-key-features#block--allow-table-lists

2 个赞

这样应该不行哦。“test_[0-9]” 要识别成正则表达式的话,要在前面加上 “~”

感谢回复,这种写法可以成功,我还有一个问题,就是我实际要转移的表很多,有几十张,能写在一起嘛,这样一个一个摞着写太繁琐了:joy:

感谢回复,你们俩人说的都是对的,两种写法都成功了:+1:

可以尝试用正则表达式表示

多问一个问题:

- db-name: "a"
  tbl-name:"test_[0-9]"

这个规则真的能通过正则匹配的方式将您上游的表同步到下游吗?因为这是不符合预期的(正则表达式必须是 “~” 开头),如果可以的话,这边可能有 bug:joy:

看到您的回复我又多次做了尝试,可以确定是可以的,因为昨天看到文档中也可以这么写


所以我也做了尝试,发现check可以通过,start之后也可以同步

好的,感谢您!

根据yaml的语法,应该可以写成如下,但是dm不支持这个写法

block-allow-list:
  global:
    do-tables:
    - db-name: "a"
      tbl-name:
      - "table_01"
      - "test_[0-9]"

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