本文為您介紹如何使用數據傳輸遷移 PolarDB-X 1.0 數據庫的數據至 OceanBase 數據庫 MySQL 租戶。
如果數據遷移任務長期處于非活躍狀態(任務狀態為 失敗、已暫停 或 已完成),受增量日志保留時長等影響,任務可能無法恢復。數據傳輸將主動釋放處于非活躍狀態超過 3 天的數據遷移任務,以回收相關資源,建議您為任務配置告警并及時處理任務相關異常。
背景信息
PolarDB-X 1.0 是由阿里巴巴自主研發的云原生分布式數據庫,融合分布式 SQL 引擎和分布式自研存儲 X-DB,基于云原生一體化架構設計。PolarDB-X 1.0 可以支撐千萬級并發規模,以及百 PB 級海量存儲。詳情請參見 產品概述。
PolarDB-X 1.0 數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務啟動成功后,該任務會自動刪除。數據傳輸會自動創建 PolarDB-X 1.0 數據庫下掛載的 MySQL 數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務,其任務個數取決于 PolarDB-X 1.0 數據庫底層的 MySQL 實例個數。
建議您使用標簽或任務名稱作為過濾條件對這些任務進行批量啟動、批量暫停、批量正向切換等操作。批量操作的詳情請參見 批量操作數據遷移任務。
前提條件
數據傳輸已具備云資源訪問權限。詳情請參見 數據傳輸遷移角色授權。
已為源端 PolarDB-X 1.0 數據庫和目標端 OceanBase 數據庫 MySQL 租戶創建專用于數據遷移的數據庫用戶,并賦予其相關權限。詳情請參見 PolarDB-X 1.0 賬號管理 和 創建數據庫用戶。
使用限制
源端數據庫的操作限制
請勿在全量遷移階段執行庫或表結構變更的 DDL 操作,否則可能造成數據遷移任務中斷。
數據傳輸支持 PolarDB-X 1.0 數據庫 V5.2.8、V5.4.2、V5.4.9 和 V5.4.12。
數據傳輸支持 PolarDB-X 1.0 數據庫下掛載的 RDS MySQL 兼容的 MySQL 數據庫 V5.5、V5.6、V5.7 和 V8.0,以及標準 RDS 和 PolarDB MySQL 實例。
數據傳輸僅支持遷移庫名、表名和列名為 ASCII 碼且不包含特殊字符(包括換行、空格,以及 .|"'`()=;/&\)的對象。
遷移 PolarDB-X 1.0 數據庫的數據至 OceanBase 數據庫 MySQL 租戶時,數據傳輸不支持以下內容:
不支持結構遷移和反向增量。
不支持源端和目標端數據庫跨阿里云賬號。
不支持遷移視圖。
不支持 PolarDB-X 1.0 數據庫下掛載的 RDS MySQL 實例的賬號密碼不一致。
OceanBase 數據庫支持的字符集為 utf8mb4、gbk、gb18030、binary 和 utf16。
注意事項
對于無唯一鍵表(指具有主鍵或者 Not Null UK 的表)的遷移,在重啟或恢復全量遷移步驟時,通常數據傳輸會自動清空(TRUNCATE)重啟或恢復前已完成同步的目標表。但在 PolarDB-X 1.0 場景下,RDS MySQL 數據庫無唯一鍵表至 OceanBase 數據庫 MySQL 租戶的數據遷移任務的全量遷移步驟在重啟或恢復時,數據傳輸不會自動清空目標表。
如果您未配置 PolarDB-X 1.0 數據庫對象的映射關系,則物理表的數據會全部同步至目標端相同名稱的物理表中,即源端物理表的數量和目標端數量一致。
如果源端和目標端的表結構不完全一致,可能會出現數據不一致的情況。目前已知場景如下:
用戶手動創建表結構時,可能會因超出數據傳輸的支持范圍而產生隱式的轉換問題,導致源端和目標端列的類型不一致。
目標端的數據長度小于源端的數據長度時,可能出現數據截斷的情況,導致源端和目標端的數據不一致。
如果創建數據遷移任務時,您僅配置了 增量同步,數據傳輸要求源端數據庫的本地增量日志保存 48 小時以上。
如果創建數據遷移任務時,您配置了 全量遷移+增量同步,數據傳輸要求源端數據庫的本地增量日志至少保留 7 天以上。否則數據傳輸可能因為無法獲取增量日志導致數據遷移任務失敗,甚至導致源端和目標端數據不一致。
如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致數據遷移的結果不符合預期。
支持的源端和目標端實例類型
下表中,OceanBase 數據庫 MySQL 租戶簡稱為 OB_MySQL。
源端 | 目標端 |
PolarDB-X 1.0(阿里云 PolarDB-X 1.0 實例) | OB_MySQL(OceanBase 集群實例) |
PolarDB-X 1.0(阿里云 PolarDB-X 1.0 實例) | OB_MySQL(Serverless 實例) |
操作步驟
登錄 OceanBase 管理控制臺,購買數據遷移任務。
詳情請參見 購買數據遷移任務。
在 數據傳輸 > 數據遷移 頁面,單擊新購買的數據遷移任務后的 配置。
如果您需要引用已有的任務配置信息,可以單擊 引用配置。詳情請參見 引用數據遷移任務配置。
在 選擇源和目標 頁面,配置各項參數。
參數
描述
遷移任務名稱
建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不得超過 64 個字符。
源端
如果您已新建 PolarDB-X 1.0 數據源,請從下拉列表中進行選擇。如果未新建,請單擊下拉列表中的 新建數據源,在右側對話框進行新建。參數詳情請參見 新建 PolarDB-X 1.0 數據源。
目標端
如果您已新建 OceanBase 數據庫 MySQL 租戶數據源,請從下拉列表中進行選擇。如果未新建,請單擊下拉列表中的 新建數據源,在右側對話框進行新建。參數詳情請參見 新建 OceanBase 數據源。
標簽
單擊文本框,在下拉列表中選擇目標標簽。您也可以單擊 管理標簽,進行新建、修改和刪除。詳情請參見 通過標簽管理數據遷移任務。
說明PolarDB-X 1.0 數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務啟動成功后,該任務會自動刪除,請選擇合適的標簽進行標記。
擊 下一步。在 選擇遷移類型 頁面,選擇當前數據遷移任務的遷移類型。
遷移類型支持 全量遷移、增量同步 和 全量校驗。
遷移類型
描述
全量遷移
全量遷移任務開始后,數據傳輸會將源端庫表的存量數據遷移至目標端數據庫對應的表中。
執行數據遷移前,請評估源端和目標端的性能,建議在業務低峰期執行數據遷移。否則全量遷移期間,數據傳輸占用源端和目標端一定的讀寫資源,可能會導致數據庫的負載上升。性能評估詳情請參見 遷移評估的性能評估。
增量同步
增量同步任務開始后,數據傳輸會同步源端數據庫發生變化的數據(新增、修改或刪除)至目標端數據庫對應的表中。
增量同步 支持的同步 DML 包括
Insert
、Delete
和Update
,您可以根據需求進行選擇。詳情請參見 自定義配置 DDL/DML。全量校驗
在全量遷移完成、增量數據同步至目標端并與源端基本追平后,數據傳輸會自動發起一輪針對源端庫配置的數據表和目標表的全量數據校驗任務。
如果您選擇了 增量同步,且 同步 DML 選項中未選擇所有的 DML,則數據傳輸不支持本場景下的全量數據校驗。
執行數據遷移前,請評估源端和目標端的性能,建議業務低峰期執行數據遷移。否則全量校驗期間,數據傳輸占用源端和目標端部分讀資源,可能會導致數據庫的負載上升。
單擊 下一步。在 選擇遷移對象 頁面,選擇當前數據遷移任務的遷移對象。
目前僅支持通過 指定對象 的方式選擇遷移對象。在左側選中需要遷移的對象,單擊 >,將其添加至右側列表中。您可以選擇一個或多個庫的表作為遷移對象。
數據傳輸支持通過文本導入對象,并支持對目標端對象進行重命名、設置行過濾、查看列信息,以及移除單個或全部遷移對象等操作。
操作
步驟
導入對象
在選擇區域的右側列表中,單擊右上角的 導入對象。
在對話框中,單擊 確定。
重要導入會覆蓋之前的操作選擇,請謹慎操作。
在 導入遷移對象 對話框中,導入需要遷移的對象。
您可以通過導入 CSV 文件的方式進行庫表重命名、設置行過濾條件等操作。詳情請參見 下載和導入遷移對象配置。
單擊 檢驗合法性。
完成遷移對象導入后,請先檢驗合法性。目前暫不支持列字段映射。
通過檢驗后,單擊 確定。
重命名
數據傳輸支持重命名遷移對象的名稱,詳情請參見 數據庫庫表重命名。
設置
數據傳輸支持
WHERE
條件實現行過濾,詳情請參見 SQL 條件過濾數據。您還可以在 查看列 區域,查看遷移對象的列信息。
移除/全部移除
數據傳輸支持在數據映射時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個遷移對象
在選擇區域的右側列表中,鼠標懸停至目標對象,單擊顯示的 移除,即可移除該遷移對象。
移除全部遷移對象
在選擇區域的右側列表中,單擊右上角的 全部移除。在對話框中,單擊 確定,即可移除全部遷移對象。
單擊 下一步。在 遷移選項 頁面,配置各項參數。
全量遷移
在 選擇遷移類型 頁面,選中 全量遷移,才會顯示下述參數。
參數
描述
讀取并發配置
該參數用于配置全量遷移階段從源端讀取數據的并發數,最大限制為 512.并發數過高可能會造成源端壓力過大,影響業務。
寫入并發配置
該參數用于配置全量遷移階段往目標端寫入數據的并發數,最大限制為 512。并發數過高可能會造成目標端壓力過大,影響業務。
全量遷移速率限制
您可以根據實際需求決定是否開啟全量遷移速率限制。如果開啟,請設置 RPS(全量遷移階段每秒最多可以遷移至目標端的數據行數的最大值限制)和 BPS(全量遷移階段每秒最多可以遷移至目標端的數據量的最大值限制)。
說明此處設置的 RPS 和 BPS 僅作為限速限流能力,全量遷移實際可以達到的性能受限于源端、目標端、實例規格配置等因素的影響。
目標端表對象存在記錄時處理策略
處理策略包括 忽略 和 停止遷移:
選擇 忽略:當目標端表對象存在數據時,如果原數據與寫入數據沖突,數據傳輸采用將沖突數據記錄日志,保留原數據不變的策略進行數據寫入。
重要選擇 忽略,全量校驗將使用 IN 模式拉取數據,無法校驗目標端存在源端沒有的數據的場景,并且校驗性能會有一定程度降級。
選擇默認值 停止遷移:當目標端表對象存在數據時,全量遷移會報錯不允許遷移,請處理好目標端數據后再繼續遷移。
重要如果出錯后單擊恢復,數據傳輸將忽略該配置選項,繼續遷移表數據,請謹慎操作。
增量同步
在 選擇遷移類型 頁面,選中 增量同步,才會顯示下述參數。
參數
描述
寫入并發配置
該參數用于配置增量同步階段往目標端寫入數據的并發數,最大限制為 512。并發數過高可能會造成目標端壓力過大,影響業務。
增量同步速率限制
您可以根據實際需求決定是否開啟增量同步速率限制。如果開啟,請設置 RPS(增量同步階段每秒最多可以同步至目標端的數據行數的最大值限制)和 BPS(增量同步階段每秒最多可以同步至目標端的數據量的最大值限制)。
說明此處設置的 RPS 和 BPS 僅作為限速限流能力,增量同步實際可以達到的性能受限于源端、目標端、實例規格配置等因素的影響。
增量同步起始位點
如果選擇遷移類型時已選擇 全量遷移,則不顯示該參數。
如果選擇遷移類型時未選擇 全量遷移,但選擇了 增量同步,請在此處指定遷移某個時間節點之后的數據,默認為當前系統時間。詳情請參見 設置增量同步位點。
單擊 預檢查,系統對數據遷移任務進行預檢查。
在 預檢查 環節,數據傳輸會檢查數據庫用戶的讀寫權限、數據庫的網絡連接等是否符合要求。全部檢查任務均通過后才能啟動數據遷移任務。如果預檢查報錯:
您可以在排查并處理問題后,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話框提示您跳過本操作的具體影響,確認可以跳過后,請單擊對話框中的 確定。
預檢查成功后,單擊 啟動任務。
如果您暫時無需啟動任務,請單擊 保存。后續您只能在 遷移任務列表 頁面手動啟動任務或通過批量操作啟動任務。批量操作的詳情請參見 批量操作數據遷移任務。
任務啟動成功后,PolarDB-X 1.0 數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務會自動刪除,數據傳輸會保存 PolarDB-X 1.0 數據庫下掛載的數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務,并自動創建相應的數據源。您可以在彈出對話框中單擊 下載為文件,將相關信息保存為 CSV 文件。
單擊對話框中的 確定,進入 遷移任務列表 頁面,單個或批量啟動 MySQL 數據庫至 OceanBase 數據庫 MySQL 租戶的數據遷移任務。
數據傳輸支持在數據遷移任務運行過程中修改遷移對象,詳情請參見 查看和修改遷移對象及其過濾條件。數據遷移任務啟動后,會根據選擇的遷移類型依次執行,詳情請參見 查看遷移詳情。