Data Transmission Service提供的Exactly-Once寫入功能,可以協助您將既無主鍵也無唯一約束的表的全量和增量資料準確地同步到目標表。
適用範圍
當前僅部分雙向同步執行個體的全量和增量任務支援此功能,詳情請參見支援的鏈路。
多主叢集(Limitless)系列的PolarDB MySQL版叢集不支援此功能。
計費方式為Serverless的任務,不支援開啟Exactly-Once寫入功能。
源庫存在既無主鍵也無唯一約束的表,且該表有如下限制:
若源庫的資料庫類型為MySQL,且接入方式不為雲執行個體,則源庫必須開啟GTID複製模式,且待同步表的儲存引擎必須是事務性儲存引擎(如InnoDB)。
待同步的單張表不能超過200 GB。
DDL變更操作不支援Exactly-Once寫入功能。此類操作可能導致任務失敗,其中資料清理DDL(例如
TRUNCATE)可能會導致資料不一致的問題。開啟Exactly-Once寫入功能的任務,其增量效能不足,增量寫入效能應控制在3000 RPS以內。
支援的鏈路
僅雙向同步執行個體支援。
源庫 | 目標庫 |
MySQL | MySQL、PolarDB for MySQL |
PolarDB for MySQL | MySQL、PolarDB for MySQL |
注意事項
配置了Exactly-Once寫入功能的雙向同步執行個體,需要注意如下事項:
若源庫的資料庫類型為MySQL或PolarDB for MySQL,在雙向同步執行個體運行時,源庫既無主鍵也無唯一約束的表會出現短暫的表鎖定。
若源庫有清理資料的DDL操作(尤其是執行該操作後增量寫入模組重啟),可能會導致資料丟失,您需自行確保資料的一致性。
全量和增量任務會在目標執行個體建立名為
dts的資料庫或Schema,並且在其中建立多張事務表。在DTS任務運行過程中,請勿對該事務表進行DML操作。反向同步任務是否開啟Exactly-Once寫入的配置預設與正向同步任務相同且無法修改。
在全量同步過程中,DTS會對待同步的無主鍵和唯一約束的表進行全表查詢,並產生錶快照。
操作步驟
進入到正向同步任務的對象配置階段。
說明若您使用的是舊版配置頁,則需要進入配置任務對象及高級配置階段。
進入方式,請參見同步方案概覽中對應的配置文檔。
將是否開啟Exactly-Once寫入選擇為是。
根據實際需求,完成後續配置。