数据传输服务DTS(Data Transmission Service)提供的Exactly-Once写入功能,可以帮助您将既无主键也无唯一约束的表的全量和增量数据准确地同步到目标表。
使用限制
当前仅部分双向同步实例的全量和增量任务支持此功能,详情请参见支持的链路。
源库存在既无主键也无唯一约束的表,且该表有如下限制:
若源库的数据库类型为MySQL,且接入方式不为云实例,则源库必须开启GTID复制模式,且待同步表的存储引擎必须是事务性存储引擎(如InnoDB)。
待同步的单张表不能超过200 GB。
除了清理数据的DDL操作外,其他DDL变更均不支持Exactly-Once写入功能(DTS不保证数据的一致性)。
支持的链路
仅双向同步链路支持。
源库 | 目标库 |
MySQL | MySQL、PolarDB for MySQL |
PolarDB for MySQL | MySQL、PolarDB for MySQL |
PostgreSQL | PostgreSQL、PolarDB for PostgreSQL |
PolarDB for PostgreSQL | PostgreSQL、PolarDB for PostgreSQL |
PolarDB(兼容Oracle) | PolarDB(兼容Oracle) |
注意事项
若源库的数据库类型为MySQL或PolarDB for MySQL,在任务运行时,源库既无主键也无唯一约束的表会出现短暂的表锁定。
全量和增量任务会在目标实例创建名为
dts
的数据库或Schema,并且在其中创建多张事务表。在DTS任务运行过程中,请勿对该事务表进行DML操作。反向同步任务是否开启Exactly-Once写入的配置默认与正向同步任务相同且无法修改。
操作步骤
进入到正向同步任务的对象配置阶段。
说明若您使用的是旧版配置页,则需要进入配置任务对象及高级配置阶段。
进入方式,请参见同步方案概览中对应的配置文档。
将是否开启Exactly-Once写入选择为是。
根据实际需求,完成后续配置。