DM同步的时候,自动创建下游数据库和表如何屏蔽

我的上游数据库有50个库和表

结果DM在任务同步时, 自动在TIDB上,创建了50个空的数据库:

然后还去创建对应的表

这个怎么屏蔽掉???

所以报第一个错,提示库已经存在, 有什么办法不让他自动创建库??不自动创建表

全量的话貌似没有办法避免
可以采用dumpling+lighting来拷贝数据,然后dm增量数据,lighting可以只导入数据

能发一下任务配置吗,感觉 BAList 没配好

block-allow 配合route 呢?

直接使用DM做分库分表合并,没法屏蔽的,配置规则正确,只是创建空库的

关键是,为什么会去创建空库,这算是一个BUG啊, 我同步了一个100个分库的表,结果创建了100个空库, 让别人看到,会说上几句的

您好,库的映射是不是没设置,库和表的映射都要设置的,如下:

  rule-1:
    schema-pattern: "test_*"
    table-pattern: "t_*"
    target-schema: "test"
    target-table: "t"
  rule-2:
    schema-pattern: "test_*"
    target-schema: "test"
2赞

定义数据源表迁移到目标 TiDB 表的路由规则,可以定义多个规则

定义数据源表迁移到目标 TiDB 表的路由规则,可以定义多个规则

他的意思是,您没有配置 schema 级别的 route 规则。从 BAList 来看,所有开头是 “cloud_order_” 的库都能命中,需要同步到下游;在开始全量同步的时候,lightning 会先对库创建的文件(dumpling 导出时,会创建一个 db-schema-create.sql 的文件)进行 route,如果没有库级别的规则,如:

# 库级别规则
rule-2:
    schema-pattern: "test_*"
    target-schema: "test"

这个文件是无法匹配到任何表级别的规则的,如:

# 表级别规则
rule-1:
    schema-pattern: "test_*"
    table-pattern: "t_*"
    target-schema: "test"
    target-table: "t"

这时候,lightning 就会直接在下游创建一个同名的库(因为上游存在于这个库中的表可能也命中了 BAList,但是没有命中 routes,这时候它们就需要直接导入到和原来名字相同的库、表中)。这就是为什么全量同步的过程中有可能创建空的库。

您可以尝试配置库级别的 route 规则,看看是否还会有这个问题。如果还有,就可能是 bug。

1赞