TIDB/dm:v6.0
#备注: db1,db2,db3在同一个数据库系统,即source-id相同
#问题:list2怎么加入进来?
mysql-instances:
-
source-id: “source-prod-01”
block-allow-list: “list1” #问题list2怎么加入进来?
route-rules: [“route-rule-1”,“route-rule-2”,“route-rule-3”]
block-allow-list:
list1:
do-dbs: [“db1”]
do-tables:
- db-name: “db1”
tbl-name: “tb1”
list2:
do-dbs: [“db2”,“db3”]
ignore-tables:
- db-name: “db2”
tbl-name: “tb2”
- db-name: “db3”
tbl-name: “tb3”
routes:
route-rule-1:
schema-pattern: “db1”
target-schema: “dball”
route-rule-2:
schema-pattern: “db2”
target-schema: “dball”
route-rule-3:
schema-pattern: “db3”
target-schema: “dball”
上面案例怎么合并,改了半天,db2,db3过滤外的表没有同步
db1我只需要其中几个表(不要的多),db2,db3我需要过滤部分表(需要的多),最后都合并到一个数据库
你这个需求可以合并到一个list啊
block-allow-list:
list1:
do-dbs: [“db1”,“db2”,“db3”]
do-tables:
- db-name: “db1”
tbl-name: “tb1”
ignore-tables:
- db-name: “db2”
tbl-name: “tb2”
只同步了db1–tb1, db2,db3没有同步 任何表
楼上对 block-allow-list 的设置有问题的。block-allow-list 规则:
- 当 do-dbs 有设置时:
- 如果表名命中该 do-dbs 列表,开始判断 do-tables(4)
- 如果表明没有命中 do-dbs 列表,该表不需要被迁移
- 当 do-dbs 没有设置且 ignore-dbs 有设置:
- 如果表名命中 ignore-dbs 列表,该表不需要被迁移
- 如果表名没有命中 ignore-dbs 列表,开始判断 do-tables(4)
- 如果 do-dbs 和 ignore-dbs 都没有设置,开始判断 do-tables(4)
- 当 do-tables 有设置:
- 如果表名命中 do-tables,则该表命中,需要被迁移
- 如果表名没有命中 do-tables,该表不需要迁移
- 当 do-tables 没有设置且 ignore-tables 有设置:
- 当表名命中 ignore-tables,则该表不需要被迁移
- 当表名没有命中 ignore-tables,该表需要被迁移
- 当 do-tables 和 ignore-tables 都没有设置,则该表需要被迁移
从这个规则里面我们可以看出:
- 在设置了 do-* 的时候,设置 ignore-* 是没有用的(并不是直觉上的 do-dbs - ignore-dbs 或者 do-tables - ignore-tables)
- 设置了 do-dbs 的时候,记得再给需要迁移的表设置 do-tables(或者在不设置 do-tables 的情况下用 ignore-tables 过滤掉不需要的表)或者直接让 do-tables 为空。
另外,DM 的 BAList 在这几个发行版里并没有太大改动,基本功能是一致的,不推荐为了测试 BAList 是否存在 bug 去实验其他版本。
2 个赞
block-allow-list:
list1:
do-dbs: [“db1”,“db2”,“db3”]
do-tables:
- db-name: “db1”
tbl-name: “tb1”
ignore-tables:
- db-name: “db2”
tbl-name: “tb2”
从这个设置我们可以看到:
- db1.tb1 命中 do-dbs 和 do-tables,因此成功被迁移
- db2 的表命中 do-dbs,但没有命中任何 do-tables,因此不会被迁移
- db3 的表同理,命中 do-dbs 但没有命中 do-tables,因此没有被迁移
1 个赞
谢谢,不是为了测试上6.0,是正式环境就用6.0(我们做BI报表,表都是只读使用,看了6.0部分性能提升,只要不会经常奔溃,就直接上了)
block-allow-list:
list1:
do-dbs: [“db1”]
ignore-dbs: [“db2”,“db3"]
do-tables:
- db-name: “db1”
tbl-name: “tb1”
ignore-tables:
- db-name: “db2”
tbl-name: “tb2”
- db-name: “db3”
tbl-name: “tb3”
routes:
route-rule-1:
schema-pattern: “db1”
target-schema: “dball”
route-rule-2:
schema-pattern: “db2”
target-schema: “dball”
route-rule-3:
schema-pattern: “db3”
target-schema: “dball”
这样是否正常? 但执行后还是一样
- db1.tb1 命中 do-dbs,随后命中 do-tables,成功迁移
- db2 的所有表都没有命中 do-dbs,被忽略
- db3 的所有表都没有命中 do-dbs,被忽略
可以按照上面给出的算法自己推演一下呀。
从这个规则里面我们可以看出:
1. 在设置了 do-* 的时候,设置 ignore-* 是没有用的( **并不是直觉上的 do-dbs - ignore-dbs 或者 do-tables - ignore-tables** )
2. 设置了 do-dbs 的时候,记得再给需要迁移的表设置 do-tables(或者在不设置 do-tables 的情况下用 ignore-tables 过滤掉不需要的表)或者直接让 do-tables 为空。
system
(system)
关闭
17
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。