同步无主键和唯一约束的表

数据传输服务DTS(Data Transmission Service)提供的Exactly-Once写入功能,可以帮助您将既无主键也无唯一约束的表的全量和增量数据准确地同步到目标表。

使用限制

  • 当前仅部分双向同步实例的全量和增量任务支持此功能,详情请参见支持的链路

  • 多主集群系列的PolarDB MySQL集群不支持此功能。

  • 源库存在既无主键也无唯一约束的表,且该表有如下限制:

    • 若源库的数据库类型MySQL,且接入方式不为云实例,则源库必须开启GTID复制模式,且待同步表的存储引擎必须是事务性存储引擎(如InnoDB)。

    • 待同步的单张表不能超过200 GB。

    • DDL变更操作不支持Exactly-Once写入功能。

支持的链路

重要

仅双向同步实例支持。

源库

目标库

MySQL

MySQLPolarDB for MySQL

PolarDB for MySQL

MySQLPolarDB for MySQL

注意事项

配置了Exactly-Once写入功能的双向同步实例,需要注意如下事项:

  • 若源库的数据库类型MySQLPolarDB for MySQL,在双向同步实例运行时,源库既无主键也无唯一约束的表会出现短暂的表锁定。

  • 若源库有清理数据的DDL操作(尤其是执行该操作后增量写入模块重启),可能会导致数据丢失,您需自行确保数据的一致性。

  • 全量和增量任务会在目标实例创建名为dts的数据库或Schema,并且在其中创建多张事务表。在DTS任务运行过程中,请勿对该事务表进行DML操作。

  • 反向同步任务是否开启Exactly-Once写入的配置默认与正向同步任务相同且无法修改。

  • 在全量同步过程中,DTS会对待同步的无主键和唯一约束的表进行全表查询,并生成表快照。

操作步骤

  1. 进入到正向同步任务的对象配置阶段。

    说明
    • 若您使用的是旧版配置页,则需要进入配置任务对象及高级配置阶段。

    • 进入方式,请参见同步方案概览中对应的配置文档。

  2. 是否开启Exactly-Once写入选择为

  3. 根据实际需求,完成后续配置。