本文以 MySQL 資料庫至 OceanBase 資料庫 MySQL 租戶的雙向同步任務為例,為您介紹雙向同步的相關說明和操作步驟。
如果資料移轉任務長期處於非活躍狀態(任務狀態為 失敗、已暫停 或 已完成),受增量日誌保留時間長度等影響,任務可能無法恢複。資料轉送將主動釋放處於非活躍狀態超過 3 天的資料移轉任務,以回收相關資源,建議您為任務配置警示並及時處理任務相關異常。
背景資訊
什麼是雙向同步
雙向同步支援在資料增量同步處理階段,同時配置相同資料來源的正向和反向遷移任務,實現資料可以在源端和目標端之間相互同步的能力。通過防迴圈複製的機制,可以避免某一方向已經同步過的資料,不會被對向任務重複同步。
雙向同步並不意味著業務可以在兩端同時進行寫入操作。如果業務同時對相同的資料(同一主鍵或唯一鍵)進行寫入操作,需要在雙向同步任務的配置上定義資料衝突的處理策略(覆蓋或忽略),強烈建議業務層面避免對兩端同時進行相同資料的寫入操作。
支援雙向同步的遷移類型
資料轉送支援 MySQL 資料庫與 OceanBase 資料庫 MySQL 租戶、Oracle 資料庫與 OceanBase 資料庫 Oracle 租戶,以及 OceanBase 資料庫與 OceanBase 資料庫之間的雙向資料同步。使用限制、注意事項等更多詳情請參見相應類型的資料移轉文檔。
MySQL 資料來源授權語句
當您進行 MySQL 資料庫和 OceanBase 資料庫之間的雙向同步時,請為當前任務的 MySQL 資料來源下的資料庫帳號賦予 CREATE DATABASE 和 CREATE TABLE 許可權。資料轉送需要建立事務庫和事務表實現雙向同步防迴圈複製的能力,否則可能導致雙向同步任務異常。
授予全域建立資料庫許可權
GRANT CREATE ON *.* TO '<user_name>' ;允許使用者在名為 oms 的資料庫中建立表
GRANT CREATE ON oms.* TO '<user_name>'
Oracle 資料來源建立 Schema 及授權語句
當您進行 Oracle 資料庫和 OceanBase 資料庫之間的雙向同步時,請在當前任務的 Oracle 資料來源下建立名為 OMS 的 Schema,並且為資料來源下的資料庫帳號賦予在 OMS Schema 下 CREATE TABLE 的許可權,否則可能導致雙向同步任務異常。
建立 OMS 使用者
CREATE USER OMS IDENTIFIED BY <YOUR_PASSWORD> DEFAULT TABLESPACE <指定資料表空間>; // YOUR_PASSWORD 為實際的使用者密碼 ALTER USER OMS QUOTA unlimited ON <上一步指定的資料表空間>; ALTER USER <資料來源使用者> QUOTA unlimited ON <上一步指定的資料表空間>;賦予許可權
GRANT CREATE ANY TABLE TO <YOUR_USERNAME>; GRANT INSERT ANY TABLE TO <YOUR_USERNAME>; GRANT UPDATE ANY TABLE TO <YOUR_USERNAME>; GRANT DELETE ANY TABLE TO <YOUR_USERNAME>; GRANT SELECT ANY TABLE TO <YOUR_USERNAME>;
注意事項
雙向同步任務通過配置正向和反向任務,構成雙向同步任務為您提供服務。
類型 | 描述 |
正向任務 |
|
反向任務 |
|
其他注意事項 |
|
關於資料衝突情境說明
為了保證雙向同步資料的一致性,請確認業務對相同主鍵或非空唯一鍵的資料操作只在雙向同步的一端執行。如果兩端同時更新,可能導致資料出現衝突,主要包括以下情境。
INSERT 時唯一鍵衝突
如果業務在兩端接近同時執行了相同唯一鍵的 INSERT 操作,當同步到目標端時,由於唯一性限制式導致資料 INSERT 寫入失敗。您可以通過任務配置決定是否忽略衝突資料或者覆蓋目標端資料。
UPDATE 時唯一鍵衝突
UPDATE 要更新的資料在目標端已存在,將使用源端資料覆蓋更新目標端資料。
UPDATE 要更新的資料在目標端不存在,將導致資料更新失敗。
UPDATE 要更新的資料,更新後目標端出現主鍵或唯一鍵衝突,將導致資料更新失敗。
DELETE 時資料衝突
DELETE 時對應的記錄不存在,DELETE 操作失敗。
操作步驟
配置正向任務
將資料移轉任務配置至 選擇遷移類型 步驟,選擇 同步拓撲 為 雙向同步。
詳情請參見相應類型的 資料移轉 任務文檔。

在 選擇遷移類型 頁面,選擇當前資料移轉任務的遷移類型。
同步拓撲為雙向同步時,支援的遷移類型包括 結構遷移、全量遷移、增量同步處理 和 全量校正。

遷移類型
描述
結構遷移
結構遷移任務開始後,資料轉送會源庫中的資料對象定義(表、索引、約束、注釋和視圖等)遷移到目標端資料庫中,並自動過濾暫存資料表。
全量遷移
全量遷移任務開始後,資料轉送會將源端庫表的存量資料移轉至目標端資料庫對應的表中。
增量同步處理
增量同步處理任務開始後,資料轉送會將源端資料庫發生變化的資料(新增、修改或刪除)同步至目標端資料庫對應的表中。
增量同步處理 包括 DML 同步 和 DDL 同步,您可以根據需求進行自訂配置。詳情請參見 自訂配置 DDL/DML。
說明雙向同步情境下,DML 同步 選項不允許取消勾選。
雙向同步情境下,僅配置正向任務的 DDL 同步。
全量校正
在全量遷移完成、增量資料同步至目標端並與源端基本追平後,資料轉送會自動發起一輪針對源端資料庫配置的資料表和目標表的全量資料校正任務。
單擊 下一步。在 選擇遷移對象 頁面,選擇當前資料移轉任務的遷移對象。
您可以通過 指定對象 和 匹配規則 兩個入口選擇遷移對象。本文為您介紹通過 指定對象 方式選擇遷移對象的具體操作,配置匹配規則的詳情請參見 配置和修改匹配規則 中庫到庫的通配規則說明和配置方式。
重要待遷移的表名和其中的列名不能包含中文字元。
當資料庫的庫名或表名存在“$$”字元時,會影響資料移轉任務的建立。
如果您在 選擇遷移類型 步驟已勾選 DDL 同步,建議通過匹配規則方式選擇遷移對象,以確保所有符合遷移對象規則的新增對象都將被同步。如果您通過指定對象方式選擇遷移對象,則新增對象或重新命名後的對象將不會被同步。

在 選擇遷移對象 地區,選中 指定對象。
在 選擇遷移範圍 地區的 源端對象 列表選中需要遷移的對象。您可以選擇一個或多個庫的表、視圖作為遷移對象。
單擊 >,將其添加至 目標端對象 列表中。
資料轉送支援通過文本匯入對象,並支援對目標端對象進行重新命名、設定行過濾、查看列資訊,以及移除單個或全部遷移對象等操作。
說明通過 匹配規則 方式選擇遷移對象時,重新命名能力由匹配規則文法覆蓋,操作處僅支援設定過濾條件。詳情請參見 配置和修改匹配規則。
操作
描述
匯入對象
在選擇地區的右側列表中,單擊右上方的 匯入對象。
在對話方塊中,單擊 確定。
重要匯入會覆蓋之前的操作選擇,請謹慎操作。
在 匯入遷移對象 對話方塊中,匯入需要遷移的對象。
您可以通過匯入 CSV 檔案的方式進行庫表重新命名、設定行過濾條件等操作。詳情請參見 下載和匯入遷移對象配置。
單擊 檢驗合法性。
完成遷移對象匯入後,請先檢驗合法性。目前暫不支援欄欄位映射。
通過檢驗後,單擊 確定。
重新命名
資料轉送支援重新命名遷移對象的名稱,詳情請參見 資料庫庫表重新命名。
設定
資料轉送支援
WHERE條件實現行過濾,詳情請參見 SQL 條件過濾資料。您還可以在 查看列 地區,查看遷移對象的列資訊。
移除/全部移除
資料轉送支援在資料對應時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個遷移對象
在選擇地區的右側列表中,滑鼠移至上方至目標對象,單擊顯示的 移除,即可移除該遷移對象。
移除全部遷移對象
在選擇地區的右側列表中,單擊右上方的 全部移除。在對話方塊中,單擊 確定,即可移除全部遷移對象。
單擊 下一步。在 遷移選項 頁面,配置各項參數。
全量遷移
在 選擇遷移類型 頁面,選中 雙向同步 > 全量遷移,才會顯示下述參數。

參數
描述
讀取並發配置
該參數用於配置全量遷移階段從源端讀取資料的並發數,最大限制為 512 並發數過高可能會造成源端壓力過大,影響業務。
寫入並發配置
該參數用於配置全量遷移階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
全量遷移速率限制
您可以根據實際需求決定是否開啟全量遷移速率限制。如果開啟,請設定 RPS(全量遷移階段每秒最多可以遷移至目標端的資料行數的最大值限制)和 BPS(全量遷移階段每秒最多可以遷移至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,全量遷移實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
目標端表對象存在記錄時處理策略
處理策略包括 忽略 和 停止遷移:
選擇 忽略:當目標端表對象存在資料時,如果原資料與寫入資料衝突,資料轉送採用將衝突資料記錄日誌,保留原資料不變的策略進行資料寫入。
重要選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端存在源端沒有的資料的情境,並且校正效能會有一定程度降級。
選擇預設值 停止遷移:當目標端表對象存在資料時,全量遷移會報錯不允許遷移,請處理好目標端資料後再繼續遷移。
重要如果出錯後單擊恢複,資料轉送將忽略該配置選項,繼續遷移表資料,請謹慎操作。
是否允許索引後置
您可以設定是否允許全量資料移轉完成後再建立索引,索引後置功能能夠縮短全量遷移耗時。選擇索引後置的注意事項,請參見表格下方的說明。
重要在 選擇遷移類型 頁面同時選中 結構遷移 和 全量遷移,才會顯示該參數。
僅非唯一鍵索引支援後置建立。
執行索引時,如果目標端 OceanBase 資料庫遇到下述報錯,資料轉送會進行忽略,預設索引建立成功,不會再重複建立。
OceanBase 資料庫 MySQL 租戶報錯
Duplicate key name。OceanBase 資料庫 Oracle 租戶報錯
name is already used by an existing object。
當您選擇 允許 後,請進行下述配置:
單條索引 DDL 並發配置:並行度越高,資源消耗越大,遷移速度越快。
最大並發索引 DDL 數量配置:同一時刻,系統調用的後置索引 DDL 數量的最大值限制。
允許索引後置的情況下,建議您根據 OceanBase 資料庫的硬體條件和當前業務流量情況,通過黑屏用戶端工具調整以下業務租戶參數。
// 檔案記憶體緩衝區限制 alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; // V4.x 關閉限流 alter system set sys_bkgd_net_percentage = 100;增量同步處理
在 選擇遷移類型 頁面,選中 雙向同步 > 增量同步處理,才會顯示下述參數。

參數
描述
寫入並發配置
該參數用於配置增量同步處理階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
增量同步處理速率限制
您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(增量同步處理階段每秒最多可以同步至目標端的資料行數的最大值限制)和 BPS(增量同步處理階段每秒最多可以同步至目標端的資料量的最大值限制)。
說明此處設定的 RPS 和 BPS 僅作為限速限流能力,增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。
資料衝突時處理策略
包括 忽略報錯,保持目標端原有資料 和 忽略衝突,使用源端資料覆蓋目標端資料。詳情請參見上文《關於資料衝突情境說明》模組的內容。
單擊 預檢查,系統對資料移轉任務進行預檢查。
在 預檢查 環節,資料轉送會檢查資料庫使用者的讀寫權限、資料庫的網路連接等是否符合要求。全部檢查任務均通過後才能啟動資料移轉任務。如果預檢查報錯:
您可以在排查並處理問題後,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話方塊提示您跳過本操作的具體影響,確認可以跳過後,請單擊對話方塊中的 確定。
預檢查成功後,單擊 啟動任務,即可啟動正向任務。
配置反向任務
返回 遷移工作清單 頁面,待正向任務處於監控中的增量同步處理階段且任務狀態為運行中時,單擊反向任務後的 配置。

在 配置反向任務 對話方塊,配置各項參數。

參數
描述
任務執行個體
從下拉式清單中選擇一個未配置的任務執行個體,用於配置反向任務。如果不存在未配置的任務執行個體,請進行購買。詳情請參見 購買資料移轉任務。
寫入並發配置
該參數用於配置全量遷移階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。
增量同步處理速率限制
您可以根據實際需求決定是否開啟增量同步處理速率限制。
資料衝突時處理策略
包括 忽略報錯,保持目標端原有資料 和 忽略衝突,使用源端資料覆蓋目標端資料。
單擊 預檢查,系統對反向任務進行預檢查。
預檢查成功後,單擊 啟動任務,即可啟動反向任務。