本文為您介紹如何為雙向同步執行個體設定衝突修複策略,以通過衝突檢測和修複,最大限度地維護雙向同步執行個體的穩定性。
背景資訊
支援的DTS執行個體
衝突修複策略類型 | DTS執行個體 |
全域衝突修複策略 | 除Tair(企業版)執行個體間的其他雙向同步執行個體。DTS支援的雙向同步執行個體,請參見雙向同步。 |
獨立衝突修複策略 |
|
支援的衝突檢測類型
ApsaraDB for MongoDB間的雙向同步
INSERT導致的唯一性衝突
INSERT要插入的記錄在目標執行個體中出現衝突時,DTS會自動忽略INSERT操作。
UPDATE更新的記錄不完全符合
UPDATE要更新的記錄在目標執行個體中不存在或出現衝突時,DTS都會自動忽略UPDATE操作。
DELETE對應的記錄不存在
DELETE要刪除的記錄在目標執行個體中不存在時,DTS會自動忽略DELETE操作。
其他資料庫間的雙向同步
INSERT導致的唯一性衝突
同步INSERT語句時違背了唯一性限制式,例如雙向同步的兩個節點同時或者在極為接近的時間INSERT某個主索引值相同的記錄,那麼同步到對端時,會因為已經存在相同主索引值的記錄,導致Insert同步失敗。
UPDATE更新的記錄不完全符合
UPDATE要更新的記錄在同步目標執行個體中不存在時,DTS會自動轉化為INSERT,此時可能會出現唯一鍵的唯一性衝突。
UPDATE要更新的記錄出現主鍵或唯一鍵衝突。
DELETE對應的記錄不存在
DELETE要刪除的記錄在同步的目標執行個體中不存在。出現這種衝突時,不論配置何種衝突修複策略,DTS都會自動忽略DELETE操作。
支援的衝突修複策略
全域衝突修複策略
Overwrite
當資料同步遇到衝突時,直接覆蓋目標庫中的衝突記錄。
TaskFailed
當資料同步遇到衝突時,同步任務直接報錯並退出(進入失敗狀態),需要您介入修複任務。
Ignore
當資料同步遇到衝突時,直接跳過當前同步語句,繼續往下執行,選擇使用目標庫中的衝突記錄。
獨立衝突修複策略
TaskFailed
當資料同步遇到衝突時,同步任務直接報錯並退出(進入失敗狀態),需要您介入修複任務。
Ignore
當資料同步遇到衝突時,直接跳過當前同步語句,繼續往下執行,選擇使用目標庫中的衝突記錄。
Overwrite
當資料同步遇到衝突時,直接覆蓋目標庫中的衝突記錄。
UseMax
當資料同步遇到衝突時,對當前衝突列的兩條記錄進行對比,將較大值的記錄寫入到目標庫中。若目標記錄不存在或欄位類型不滿足要求,則系統的處理方法等效於Overwrite。
UseMin
當資料同步遇到衝突時,對當前衝突列的兩條記錄進行對比,將較小值的記錄寫入到目標庫中。若目標記錄不存在或欄位類型不滿足要求,則系統的處理方法等效於Ignore。
前提條件
已進入雙向同步執行個體的正向或反向任務的對象配置階段。
雙向同步執行個體的同步拓撲必須選擇為雙向同步。
注意事項
ApsaraDB for MongoDB間的雙向同步,衝突修複策略僅支援Ignore。
僅增量同步處理支援獨立衝突修複策略。
設定了獨立衝突修複策略的列,全域衝突修複策略對其不生效。
若雙向同步執行個體未設定獨立衝突修複策略,則在修改同步對象時不支援設定獨立衝突修複策略。
由於資料同步兩端的系統時間可能存在差異、同步存在延時等多種因素,DTS無法完全保證衝突檢測機制能夠完全防止資料的衝突。在使用雙向同步時,您需要在業務層面配合進行相應的改造,保證同一個主鍵、業務主鍵或唯一鍵的記錄只在雙向同步的某個節點進行更新。
為保障同步資料的一致性,您需要確保同一個主鍵、業務主鍵或唯一鍵的記錄只在雙向同步的一個節點進行更新。如果同時更新則會按照您在資料同步作業中配置的衝突修複策略進行響應。
如果同步任務暫停或者重啟後存在延遲,在延遲期間,設定的衝突修複策略均不生效,預設覆蓋目標端資料。
操作步驟
設定全域衝突修複策略
根據實際情況,選擇全域衝突修複策略。支援的全域衝突修複策略,請參見支援的衝突修複策略。
ApsaraDB for MongoDB間的雙向同步,衝突修複策略僅支援Ignore。

設定獨立衝突修複策略
在已選擇對象中按右鍵待同步的庫或表。
開啟獨立衝突修複策略。
庫層級
在彈出的對話方塊的獨立衝突修複策略地區,將是否開啟獨立衝突解決方案策略選擇為是。
選擇衝突修複策略。
單擊衝突檢測列右側的添加列。
在列名稱文字框中,輸入需要設定獨立衝突修複策略的列名。
說明若目標列的名稱使用了映射功能,則需要填入映射後的列名。
您可以單擊衝突檢測列右側的添加列,添加更多需要設定獨立衝突修複策略的列。
表層級
在彈出的對話方塊中的列地區,選中獨立衝突修複策略。
在衝突檢測列列,勾選需要設定獨立衝突修複策略的列。
說明預設已勾選主鍵和唯一約束的列。
選擇衝突修複策略。
說明若衝突檢測列為系統自動勾選的列,則不支援選擇UseMax和UseMin。
單擊確定。
常見問題
Q:衝突修複策略是否支援修改?
A:全域衝突修複策略支援通過修改同步對象功能進行修改。