【 TiDB 使用环境】测试环境
【 TiDB 版本】5.4.0
【遇到的问题】想将MySQL中A库的某些表,同步至TiDB的B库,配置routes后发现并没有同步成功,日志中无报错,应当是自己配置出的问题。感觉是可以实现的,但是不知道应该如何配置
【具体配置】
上图为我做的配置,各位大佬帮忙看一下吧,感谢~
【 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]"
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
这样应该不行哦。“test_[0-9]” 要识别成正则表达式的话,要在前面加上 “~”
感谢回复,这种写法可以成功,我还有一个问题,就是我实际要转移的表很多,有几十张,能写在一起嘛,这样一个一个摞着写太繁琐了![]()
感谢回复,你们俩人说的都是对的,两种写法都成功了![]()
可以尝试用正则表达式表示
多问一个问题:
- db-name: "a"
tbl-name:"test_[0-9]"
这个规则真的能通过正则匹配的方式将您上游的表同步到下游吗?因为这是不符合预期的(正则表达式必须是 “~” 开头),如果可以的话,这边可能有 bug![]()
好的,感谢您!
根据yaml的语法,应该可以写成如下,但是dm不支持这个写法
block-allow-list:
global:
do-tables:
- db-name: "a"
tbl-name:
- "table_01"
- "test_[0-9]"
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。