actiontech / dtle

Distributed Data Transfer Service for MySQL
https://actiontech.github.io/dtle-docs-cn
Mozilla Public License 2.0
551 stars 132 forks source link

ColumnMap vs reversed job #1053

Closed ghost closed 1 year ago

ghost commented 1 year ago

考虑两种反向机制

考虑
正向任务: (id, val1, val2) -> (id, val2) -- ColumnMapFrom = [id, val2]
反向任务: (id, val1, val2) <- (id, val2) -- ColumnMapFrom = ?

问题在于反向任务没有ColumnMap, 无法处理列数量不同的问题.

该案例中反向任务可以使用

ColumnMapFrom = [id, val2]
ColumnMapTo = [id, val2]

但要求val1 nullable, 或有默认值.

建立反向任务需要有自动/手动填写ColumnMap的机制.

ghost commented 1 year ago

关于“创建反向复制任务”

适用于切换复制方向的场景.

ghost commented 1 year ago

关于TwoWaySync

目前TwoWaySync会在反向任务使用正向任务的ColumnMap, 实为Bug.

ghost commented 1 year ago

方案1

对于反向任务, 交换 使用正向任务的ColumnMapFrom/To (参数行为见文档).

考虑下列几个场景, 都能满足使用意图

选择列

正向

反向

选择列 + 重建自增id + 列重命名

正向

reverse job

目标端多出列(有默认值)

正向

反向

asiroliu commented 1 year ago

verified: version: 9.9.9.9-master-6075dea

验证点: