增量同步过程中,上游创建分库分表,下游能自动创建一张带额外列的表吗?

上游数据库存在普通表和分表,已经通过DM全量迁移之后,实时增量同步。全量迁移分表时,因为需要在下游记录来自上游哪张分表,所以同步之前只能自己手动创建分表对应下游的表。如果在增量同步过程中,上游创建了新的库,并且在新的库中创建新的分表(新的分表与全量同步时已有的分表不同,分表统一以s_开始命名),能否通过DM配置实现自动创建下游对应的表,并且增加一个字段记录来自上游哪张分表?

可以通过表路由实现,按照自己的需求设定规则

为什么在全量迁移的时候不能自动创建带额外列的表,而在增量的时候可以?

在上游数据库中,可以通过使用流复制(logical replication)将更改事件传递到下游数据库。同时,可以在下游数据库上为相应的表设置触发器,当新的分库分表创建时,触发器可以自动执行创建带额外列的表的操作。

1 个赞

https://docs.pingcap.com/zh/tidb/stable/dm-table-routing

应该报错吧,两边字段数对不上

原问题的答案应该是不能实现,下游的表需要预先建好,不能动态的在上游建一系列分表,下游自动创建合表。这里有另外一个问题,分库分表迁移到带额外列的合表应该是有bug,增量同步过程中无法识别额外列:dm: Column count doesn't match value count at row 1 when use extract-schema · Issue #10552 · pingcap/tiflow · GitHub

这可能为了维护数据一致性吧

可以通过 extract-tableextract-schemaextract-source 这几个参数配置

相关文档参考:https://docs.pingcap.com/zh/tidb/stable/dm-table-routing#提取分库分表数据源信息写入合表