全部產品
Search
文件中心

ApsaraDB for OceanBase:OceanBase 資料庫之間的資料移轉

更新時間:Oct 17, 2024

本文為您介紹如何使用資料轉送遷移 OceanBase 資料庫的資料至 OceanBase 資料庫同類型租戶中。

重要

如果資料移轉任務長期處於非活躍狀態(任務狀態為 失敗已暫停已完成),受增量日誌保留時間長度等影響,任務可能無法恢複。資料轉送將主動釋放處於非活躍狀態超過 7 天的資料移轉任務,以回收相關資源,建議您為任務配置警示並及時處理任務相關異常。

背景資訊

您可以在資料轉送控制台建立從 OceanBase 資料庫遷移資料至 OceanBase 資料庫同類型租戶的資料移轉任務,通過結構遷移、全量遷移和增量同步處理,無縫遷移源端資料庫中的存量業務資料和增量資料至目標端資料庫。

前提條件

  • 資料轉送已具備雲資源存取權限。詳情請參見 資料轉送遷移角色授權

  • 已為源端和目標端 OceanBase 資料庫建立專用於資料移轉任務的資料庫使用者,並為其賦予了相關許可權。詳情請參見 建立資料庫使用者

  • 已在目標端 OceanBase 資料庫建立對應的 Schema。

使用限制

  • 源端資料庫的操作限制

    請勿在結構遷移和全量遷移階段執行庫或表結構變更的 DDL 操作,否則可能造成資料移轉任務中斷。

  • 資料轉送僅支援 OceanBase 資料庫同類型租戶之間的資料移轉。

    即支援遷移 OceanBase 資料庫 MySQL 租戶的資料至 OceanBase 資料庫 MySQL 租戶、遷移 OceanBase 資料庫 Oracle 租戶的資料至 OceanBase 資料庫 Oracle 租戶。

  • 資料轉送僅支援遷移庫名、表名和列名為 ASCII 碼且不包含特殊字元(包括換行、空格,以及 .|"'`()=;/&\)的對象。

  • 目標端是資料庫的情況下,資料轉送不支援目標端存在觸發器(Trigger)。如果存在觸發器,可能導致資料移轉失敗。

注意事項

  • ​如果源端字元集為 UTF-8,建議目標端使用相容源端的字元集(例如,UTF-8、UTF-16 等),避免因字元集不相容導致目標端出現亂碼等問題。

  • 節點之間的時鐘不同步,或者電腦終端和伺服器之間的時鐘不同步,均可能導致延遲時間(增量同步處理/反向增量)不準確。

    例如,如果時鐘早於標準時間,可能導致延遲時間為負數。如果時鐘晚於標準時間,可能導致延遲。

  • 請確認資料轉送對 DECIMAL、FLOAT 或 DOUBLE 等列類型的遷移精度是否符合預期。如果目標端欄位類型的精度小於源端欄位類型的精度,則可能發生截斷現象,導致源端和目標端的資料不一致。

  • 在未開啟同步 DDL 的情況下,如果您要變更目標端的唯一索引,需要重啟資料移轉任務,否則可能存在資料不一致的問題。

  • 如果資料移轉任務未啟用正向切換,請刪除目標端資料庫對應的唯一索引和偽列。如果不刪除唯一索引和偽列,會導致無法寫入資料,以及往下遊匯入資料時,會重建偽列,導致與源端資料庫的偽列發生衝突。

    如果資料移轉任務已啟用正向切換,資料移轉會根據資料移轉任務的類型,自動刪除隱藏列和唯一索引。詳情請參見 資料移轉服務隱藏列機制說明

  • 庫表匯聚情境下:

    • 建議您使用匹配規則的方式映射源端和目標端的關係。

    • 建議您自行在目標端建立表結構。如果使用資料轉送建立,請在結構遷移步驟跳過部分失敗對象。

  • 在源端為 OceanBase 資料庫並開啟同步 DDL 的資料移轉任務中,如果源端庫表發生重新命名(RENAME)操作,建議您重新啟動任務,避免增量同步處理遺失資料。

  • 如果在建立資料移轉任務時,您僅配置了 增量同步處理,資料轉送要求源端資料庫的本地增量日誌儲存 48 小時以上。

    如果在建立資料移轉任務時,您配置了 全量遷移+增量同步處理,資料轉送要求源端資料庫的本地增量日誌至少保留 7 天以上。否則資料轉送可能因無法擷取增量日誌而導致資料移轉任務失敗,甚至導致源端和目標端資料不一致。

  • 如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致資料移轉的結果不符合預期。

  • 僅適用於 OceanBase 資料庫 MySQL 租戶的注意事項:

    • OceanBase 資料庫 MySQL 租戶之間的資料移轉,預設按照目標端參數lower_case_table_names = 1設定,並以小寫方式建立目標端資料庫物件。

    • 如果源端和目標端的表結構不完全一致,則可能會出現資料不一致的情況。目前已知的情境如下:

      • 使用者手動建立表結構時,因超出資料轉送的支援範圍,可能會產生隱式的轉換問題,導致源端和目標端列的類型不一致。

      • 目標端的資料長度小於源端的資料長度時,可能出現資料截斷的情況,導致源端和目標端的資料不一致。

  • 僅適用於 OceanBase 資料庫 Oracle 租戶的注意事項:

    • 如果您在遷移過程中,跳過 "源端-主庫-資料庫 ROW_MOVEMENT 檢查" 預檢查項,同步ROW_MOVEMENTenable的表,會出現資料不一致的情況。

支援的源端和目標端執行個體類型

下表中,OceanBase 資料庫 MySQL 租戶簡稱為 OB_MySQL,OceanBase 資料庫 Oracle 租戶簡稱為 OB_Oracle。

源端

目標端

OB_MySQL(OceanBase 叢集執行個體)

OB_MySQL(OceanBase 叢集執行個體)

OB_MySQL(VPC 內自建資料庫)

OB_MySQL(OceanBase 叢集執行個體)

OB_MySQL(Serverless 執行個體)

OB_MySQL(OceanBase 叢集執行個體)

OB_MySQL(OceanBase 叢集執行個體)

OB_MySQL(VPC 內自建資料庫)

OB_MySQL(Serverless 執行個體)

OB_MySQL(VPC 內自建資料庫)

OB_MySQL(OceanBase 租戶執行個體)

OB_MySQL(Serverless 執行個體)

OB_Oracle(OceanBase 叢集執行個體)

OB_Oracle(OceanBase 叢集執行個體)

OB_Oracle(OceanBase 叢集執行個體)

OB_Oracle(VPC 內自建資料庫)

OB_Oracle(VPC 內自建資料庫)

OB_Oracle(OceanBase 叢集執行個體)

操作步驟

  1. (可選)如果您需要遷移無主鍵表,請在相應租戶中建立使用者。

    建立使用者的詳情請參見 建立資料庫使用者。如果您需要遷移有主鍵表,則跳過該步驟。

    • 如果源端為 OceanBase 資料庫 MySQL 租戶,請建立 __oceanbase_inner_drc_user 使用者。

    • 如果源端為 OceanBase 資料庫 Oracle 租戶,請建立 __OCEANBASE_INNER_DRC_USER 使用者。

  2. 登入 OceanBase 管理主控台,購買資料移轉任務。

    詳情請參見 購買資料移轉任務

  3. 資料轉送 > 資料移轉 頁面,單擊新購買的資料移轉任務後的 配置

    image.png

    如果您需要引用已有的任務配置資訊,可以單擊 引用配置。詳情請參見 引用資料移轉任務配置

  4. 選擇源和目標 頁面,配置各項參數。

    參數

    描述

    遷移任務名稱

    建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不能超過 64 個字元。

    標籤(可選)

    單擊文字框,在下拉式清單中選擇目標標籤。您也可以單擊 管理標籤,進行建立、修改和刪除。詳情請參見 通過標籤管理資料移轉任務

    源端

    如果您已建立 OceanBase 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。參數詳情請參見 建立 OceanBase 資料來源

    目標端

    如果您已建立 OceanBase 資料來源,請從下拉式清單中進行選擇。如果未建立,請單擊下拉式清單中的 建立資料來源,在右側對話方塊進行建立。

  5. 單擊 下一步。在 選擇遷移類型 頁面,選擇當前資料移轉任務的遷移類型。

    遷移類型 包括 結構遷移全量遷移增量同步處理全量校正反向增量

    image

    遷移類型

    描述

    結構遷移

    結構遷移任務開始後,資料轉送會將源庫中的資料對象定義(表、索引、約束、注釋和視圖等)遷移至目標端資料庫中,並自動過濾掉暫存資料表。

    全量遷移

    全量遷移任務開始後,資料轉送會遷移源端庫表的存量資料至目標端資料庫對應的表中。如果選擇 全量遷移,建議您在遷移資料前,收集源端 OceanBase 資料庫的統計資訊。

    增量同步處理

    增量同步處理任務開始後,資料轉送會同步源庫發生變化的資料(新增、修改或刪除)至目標端資料庫對應的表中。

    增量同步處理 包括 DML 同步DDL 同步,您可以根據需求進行自訂配置。詳情請參見 自訂配置 DDL/DML增量同步處理 的使用限制如下:

    • 如果您選擇了 DDL 同步,當源端資料庫發生資料轉送不支援的同步 DDL 操作時,會存在資料移轉中斷的風險。

    • 如果 DDL 操作為新增列,建議您將該列的屬性設定為 NULL,否則會存在資料移轉中斷的風險。

    全量校正

    在全量遷移完成、增量資料同步至目標端並與源端基本追平後,資料轉送會自動發起一輪針對源端資料庫配置的資料表和目標表的全量資料校正任務。

    • 如果選擇 全量校正,建議您在全量校正開始前,分別收集源端和目標端 OceanBase 資料庫的統計資訊。

    • 如果您選擇了 增量同步處理,且 DML 同步 選項中未選擇所有的 DML,則資料轉送不支援本情境下的全量資料校正。

    反向增量

    反向增量任務開始後,可以即時將業務切換後在目標端資料庫產生的變更資料迴流至源端資料庫。

    通常反向增量會複用增量同步處理的配置,您也可以根據實際需求進行自訂配置。

  6. (可選)單擊 下一步

    VPC 內自建資料庫類型的 OceanBase 資料來源作為源端時,如果您選擇了結構遷移或增量同步處理,均需要根據需求補充使用者名稱、密碼、oblogproxy IP 和 oblogproxy Port 等資訊。如果進行無唯一鍵表遷移,OceanBase 資料來源則需要輸入 _OCEANBASE_INNER_DRC_USER 的密碼。

    如果源端或目標端資料來源未配置相應參數,建立任務時會彈出 資料來源補充資訊 對話方塊,提醒您進行配置。參數詳情請參見 建立 OceanBase 資料來源

  7. 單擊 下一步。在 選擇遷移對象 頁面,選擇當前資料移轉任務的遷移對象。

    您可以通過 指定對象匹配規則 兩個入口選擇遷移對象。

    重要
    • 待遷移的表名和其中的列名不能包含中文字元。

    • 當資料庫的庫名或表名存在“$$”字元時,會影響資料移轉任務的建立。

    • 如果您在 選擇遷移類型 步驟已勾選 DDL 同步,建議通過匹配規則方式選擇遷移對象,以確保所有符合遷移對象規則的新增對象都將被同步。如果您通過指定對象方式選擇遷移對象,則新增對象或重新命名後的對象將不會被同步。

    • 選擇 指定對象,在左側選中需要遷移的對象,單擊 >,將其添加至右側列表中。您可以選擇一個或多個庫的表、視圖作為遷移對象。

      資料轉送支援通過文本匯入對象,並支援對目標端對象進行重新命名、設定行過濾、查看列資訊,以及移除單個或全部遷移對象等操作。

      說明

      通過 匹配規則 方式選擇遷移對象時,重新命名能力由匹配規則文法覆蓋,操作處僅支援設定過濾條件。詳情請參見 配置匹配規則

      image.png

      操作

      步驟

      匯入對象

      1. 在選擇地區的右側列表中,單擊右上方的 匯入對象

      2. 在對話方塊中,單擊 確定

        重要

        匯入會覆蓋之前的操作選擇,請謹慎操作。

      3. 匯入遷移對象 對話方塊中,匯入需要遷移的對象。

        您可以通過匯入 CSV 檔案的方式進行庫表重新命名、設定行過濾條件等操作。詳情請參見 下載和匯入遷移對象配置

      4. 單擊 檢驗合法性

        完成遷移對象匯入後,請先檢驗合法性。目前暫不支援欄欄位映射。

      5. 通過檢驗後,單擊 確定

      重新命名

      資料轉送支援重新命名遷移對象的名稱,詳情請參見 資料庫庫表重新命名

      設定

      資料轉送支援 WHERE 條件實現行過濾,詳情請參見 SQL 條件過濾資料

      您還可以在 查看列 地區,查看遷移對象的列資訊。

      移除/全部移除

      資料轉送支援在資料對應時,對暫時選中到目標端的單個或多個對象進行移除操作。

      • 移除單個遷移對象

        在選擇地區的右側列表中,滑鼠移至上方至目標對象,單擊顯示的 移除,即可移除該遷移對象。

      • 移除全部遷移對象

        在選擇地區的右側列表中,單擊右上方的 全部移除。在對話方塊中,單擊 確定,即可移除全部遷移對象。

    • 選擇 匹配規則,詳情請參見 配置匹配規則

  8. 單擊 下一步。在 遷移選項 頁面,配置各項參數。

    • 全量遷移

      選擇遷移類型 頁面,選中 全量遷移,才會顯示下述參數。

      image

      參數

      描述

      讀取並發配置

      該參數用於配置全量遷移階段從源端讀取資料的並發數,最大限制為 512.並發數過高可能會造成源端壓力過大,影響業務。

      寫入並發配置

      該參數用於配置全量遷移階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。

      全量遷移速率限制

      您可以根據實際需求決定是否開啟全量遷移速率限制。如果開啟,請設定 RPS(全量遷移階段每秒最多可以遷移至目標端的資料行數的最大值限制)和 BPS(全量遷移階段每秒最多可以遷移至目標端的資料量的最大值限制)。

      說明

      此處設定的 RPS 和 BPS 僅作為限速限流能力,全量遷移實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。

      目標端表對象存在記錄時處理策略

      選擇遷移類型 頁面,選中 全量遷移,才會顯示該參數。處理策略包括 忽略停止遷移

      • 選擇 忽略:當目標端表對象存在資料時,如果原資料與寫入資料衝突,資料轉送採用將衝突資料記錄日誌,保留原資料不變的策略進行資料寫入。

        重要

        選擇 忽略,全量校正將使用 IN 模式拉取資料,無法校正目標端存在源端沒有的資料的情境,並且校正效能會有一定程度降級。

      • 選擇預設值 停止遷移:當目標端表對象存在資料時,全量遷移會報錯不允許遷移,請處理好目標端資料後再繼續遷移。

        重要

        如果出錯後單擊恢複,資料轉送將忽略該配置選項,繼續遷移表資料,請謹慎操作。

      是否允許索引後置

      您可以設定是否允許全量資料移轉完成後再建立索引,索引後置功能能夠縮短全量遷移耗時。選擇索引後置的注意事項,請參見表格下方的說明。

      重要
      • 選擇遷移類型 頁面同時選中 結構遷移 全量遷移,才會顯示該參數。

      • 僅非唯一鍵索引支援後置建立。

      • 執行索引時,如果目標端 OceanBase 資料庫 MySQL 租戶遇到Duplicate key name報錯,或 OceanBase 資料庫 Oracle 租戶遇到name is already used by an existing object報錯,資料轉送會進行忽略,預設為索引建立成功,不會再重複建立。

      當您選擇 允許 後,請進行下述配置:

      • 單條索引 DDL 並發配置:並行度越高,資源消耗越大,遷移速度越快。

      • 最大並發索引 DDL 數量配置:同一時刻,系統調用的後置索引 DDL 數量的最大值限制。

      允許索引後置的情況下,建議您根據 OceanBase 資料庫的硬體條件和當前業務流量情況,自行調節參數。

      • 如果您使用的是 OceanBase 資料庫 V4.x,請通過黑屏用戶端工具調整以下 sys 租戶參數和業務租戶參數。

        • 調整 sys 租戶參數

          // parallel_servers_target 用於設定每個 Server 上的並行查詢排隊條件。
          // 如果完全為了效能,建議您將該參數調整為大於物理 CPU 的值,例如 1.5 倍。同時設定的值不超過 64,避免產生 OceanBase 資料庫核心搶鎖問題。
          set global parallel_servers_target = 64; 
        • 調整業務租戶參數

          // 檔案記憶體緩衝區限制
          alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; 
          // V4.x 關閉限流
          alter system set sys_bkgd_net_percentage = 100;  
      • 如果您使用的是 OceanBase 資料庫 V3.x ,請通過黑屏用戶端工具調整以下 sys 租戶參數。

        // parallel_servers_target 用於設定每個 Server 上的並行查詢排隊條件。
        // 如果完全為了效能,建議您將該參數調整為大於物理 CPU 的值,例如 1.5 倍。同時設定的值不超過 64,避免產生 OceanBase 資料庫核心搶鎖問題。
        set global parallel_servers_target = 64; 
        // data_copy_concurrency 用於設定系統中並發執行的資料移轉複製任務的最大並發數。
        alter system set data_copy_concurrency = 200; 
    • 增量同步處理

      選擇遷移類型 頁面,選中 增量同步處理,才會顯示下述參數。

      image

      參數

      描述

      寫入並發配置

      該參數用於配置增量同步處理階段往目標端寫入資料的並發數,最大限制為 512。並發數過高可能會造成目標端壓力過大,影響業務。

      增量同步處理速率限制

      您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(增量同步處理階段每秒最多可以同步至目標端的資料行數的最大值限制)和 BPS(增量同步處理階段每秒最多可以同步至目標端的資料量的最大值限制)。

      說明

      此處設定的 RPS 和 BPS 僅作為限速限流能力,增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。

      增量同步處理起始位點

      • 如果選擇遷移類型時已選擇 全量遷移,該參數不顯示。

      • 如果選擇遷移類型時未選擇 全量遷移,但選擇了 增量同步處理,請在此處指定遷移某個時間節點之後的資料,預設為當前系統時間。詳情請參見 設定增量同步處理位點

    • 反向增量

      選擇遷移類型 頁面,選中 增量同步處理,才會顯示該地區的參數。反向增量的配置參數預設 複用增量同步處理配置

      image

      您也可以取消複用增量同步處理配置,根據實際需求進行配置。

      參數

      描述

      寫入並發配置

      該參數用於配置反向增量階段往源端寫入資料的並發數,最大限制為 512。並發數過高可能會造成源端壓力過大,影響業務。

      增量同步處理速率限制

      您可以根據實際需求決定是否開啟增量同步處理速率限制。如果開啟,請設定 RPS(反向增量同步處理階段每秒最多可以同步至源端的資料行數的最大值限制)和 BPS(反向增量同步處理階段每秒最多可以同步至源端的資料量的最大值限制)。

      說明

      此處設定的 RPS 和 BPS 僅作為限速限流能力,反向增量同步處理實際可以達到的效能受限於源端、目標端、執行個體規格配置等因素的影響。

      增量同步處理起始位點

      預設以正向切換(如有)為準,不支援修改。

    • 遷移進階配置

      image

      參數

      描述

      目標端表Object Storage Service類型

      當目標端 OceanBase 資料庫為 V4.3.0 及之後版本,並且在 選擇遷移類型 頁面選中 結構遷移增量同步處理 > DDL 同步,才會顯示該參數。

      目標端表Object Storage Service類型包括 預設行存列存行列混存,該配置用於確定結構遷移或增量同步處理時目標端表對象的儲存類型,詳情請參見 default_table_store_format

      說明

      預設 選項是根據目標端參數配置自適應其他選項,是結構遷移的表對象或增量 DDL 的新增表對象根據設定的儲存類型寫對應的結構。

      源端表Object Storage Service類型

      當源端 OceanBase 資料庫為 V4.3.0 及之後版本,並且在 選擇遷移類型 頁面選中 反向增量 > DDL 同步,才會顯示該參數。

      源端表Object Storage Service類型包括 預設行存列存行列混存,該配置用於確定反向增量同步處理時源端表對象的儲存類型。詳情請參見 default_table_store_format

      說明

      預設 選項是根據目標端參數配置自適應其他選項,是反向增量時增量 DDL 的新增表對象根據設定的儲存類型寫入對應的結構。

  9. 單擊 預檢查,系統對資料移轉任務進行預檢查。

    預檢查 環節,資料轉送會檢查資料庫使用者的讀寫權限、資料庫的網路連接等是否符合要求。全部檢查任務均通過後才能啟動資料移轉任務。如果預檢查報錯:

    • 您可以在排查並處理問題後,重新執行預檢查,直至預檢查成功。

    • 您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話方塊提示您跳過本操作的具體影響,確認可以跳過後,請單擊對話方塊中的 確定

  10. 預檢查成功後,單擊 啟動任務

    如果您暫時無需啟動任務,請單擊 儲存。後續您只能在 遷移工作清單 頁面手動啟動任務或通過大量操作啟動任務。大量操作的詳情請參見 大量操作資料移轉任務

    資料轉送支援在資料移轉任務運行過程中修改遷移對象,詳情請參見 查看和修改遷移對象及其過濾條件。資料移轉任務啟動後,會根據所選擇的遷移類型依次執行,詳情請參見 查看遷移詳情

相關文檔