DTS是否支持同步不同schema下的表到同一个schema?
DTS支持同步不同schema的表对象到同一个schema,但是表不可以冲突。
例如:将SCHEMA_A 的表A,SCHEMA_B的表B, 同步到SCHEMA_C下的 表A和表B。
DTS是否支持双向实时同步?
DTS目前支持MySQL->MySQL的DML双向实时同步,但不支持DDL的双向实时同步。
双向同步需要满足如下条件:
- 待同步的表需具备主键。
- 源和目标库大版本需保持一致。
- 用户需要主动创建双向同步标记库表(用于解决双向同步数据回环的问题),具体操作参见文档MySQL实例间的双向同步中源库要求的相关SQL语句部分内容。
- 当前天翼云DTS只支持DML的双向同步,DDL的同步方面,仅正向同步(源库同步至目标库)支持DDL,反向同步(目标库同步至源库)不支持同步DDL,将自动过滤DDL操作。
DTS双向实时同步时,若源库和目标库同时变更同一个表的同一条数据,会怎么样?
数据库双写问题是业界难题,DTS的双向同步无法完全解决数据双写引发的数据冲突问题。在使用双向同步时,您需要在业务层面配合进行相应的改造,保证同一个主键或唯一键的记录只在双向同步的某个节点进行更新。
若短时间内业务对源库、目标库中同一条记录发生变更,DTS采用以下策略来保证数据的最终一致性:
- 当主方向配置为正向(源库到目标库)时,最终源库、目标库的数据都以目标库为准。
- 当主方向配置为反向(目标库到源库)时,最终源库、目标库的数据都以源库为准。
建议将双向同步主方向的源端库作为数据写入的主库,以降低数据回环带来的性能影响。