數據傳輸服務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寫入選擇為是。
根據實際需求,完成后續配置。