本文為您介紹如何同步 OceanBase 數據庫 MySQL 租戶的數據至云原生數據倉庫 AnalyticDB MySQL 版。
背景信息
AnalyticDB MySQL 版的基本介紹請參見 基礎數據類型。
AnalyticDB MySQL 版的建表、分區表和分布表的詳情請參見 CREATE TABLE。
前提條件
數據傳輸已具備云資源訪問權限。詳情請參見 數據傳輸遷移角色授權。
已為源端 OceanBase 數據庫創建專用于數據同步任務的數據庫用戶,并為其賦予了相關權限。詳情請參見 創建數據庫用戶。
使用限制
數據傳輸支持的 AnalyticDB MySQL 版本為 V3.0。
數據傳輸僅支持同步庫名、表名和列名為 ASCII 碼且不包含特殊字符(包括換行、空格,以及 .|"'`()=;/&\)的對象。
注意事項
當 OceanBase 數據庫 V4.x 進行增量同步時,如果生成列沒有標記 STORED 屬性,則同步目標端時該列將同步為 NULL 值,導致下游接收該列數據時不符合預期。
節點之間的時鐘不同步,或者電腦終端和服務器之間的時鐘不同步,均可能導致增量同步的延遲時間不準確。
例如,如果時鐘早于標準時間,可能導致延遲時間為負數。如果時鐘晚于標準時間,可能導致延遲。
同步 OceanBase 數據庫 MySQL 租戶的數據至 AnalyticDB MySQL 版時,關于索引的處理如下:
同步有主鍵表時,刪除其他所有索引。
同步有非空唯一鍵索引的無主鍵表時,使用第一個非空唯一索引作為主鍵,刪除其他所有索引。
不支持同步無非空唯一鍵索引的無主鍵表。
當源端/目標端中存在 TIMESTAMP 時間類型,且該時間處于夏令時的規定時間范圍時,因為源端/目標端對時間格式的處理方式不一致,可能導致源端數據寫入目標端產生不一致的問題,存在一個小時的時差。
例如,源端/目標端設置 TIMEZONE 為 "+8:00" 后,OceanBase 數據庫 MySQL 租戶查詢結果為非夏令時時間,AnalyticDB MySQL 查詢結果為夏令時時間。AnalyticDB MySQL 比 OceanBase 數據庫 MySQL 租戶快一個小時。
如果在創建數據同步任務時,您僅配置了 增量同步,數據傳輸要求源端數據庫的本地增量日志保存 48 小時以上。
如果在創建數據同步任務時,您配置了 全量同步+增量同步,數據傳輸要求源端數據庫的本地增量日志至少保留 7 天以上。否則數據傳輸可能因無法獲取增量日志而導致數據同步任務失敗,甚至導致源端和目標端數據不一致。
如果源端或目標端存在僅大小寫不同的表對象,可能會因為源端或目標端大小寫不敏感導致數據遷移的結果不符合預期。
支持的源端和目標端實例類型
下表中,OceanBase 數據庫 MySQL 租戶簡稱為 OB_MySQL。
源端 | 目標端 |
OB_MySQL(OceanBase 集群實例) | AnalyticDB MySQL |
OB_MySQL(Serverless 實例) | AnalyticDB MySQL |
數據類型映射
OceanBase 數據庫 MySQL 租戶數據類型 | AnalyticDB MySQL 版 V3.0 數據類型 |
BIGINT | BIGINT |
BINARY | VARBINARY |
BIT | VARBINARY |
BLOB | VARBINARY |
CHAR | VARCHAR |
DATE | DATE |
DATETIME | DATETIME |
DECIMAL | DECIMAL(p,s) p: 1~1000 s<=p |
DOUBLE | DOUBLE |
ENUM | VARCHAR |
FLOAT | FLOAT |
INT | INT |
INTEGER | INT |
LONGBLOB | VARBINARY |
LONGTEXT | VARCHAR |
MEDIUMBLOB | VARBINARY |
MEDIUMTEXT | VARCHAR |
NUMERIC | DECIMAL |
SET | VARCHAR |
SMALLINT | SMALLINT |
TEXT | VARCHAR |
TIME | TIME |
TIMESTAMP | TIMESTAMP |
TINYBLOB | VARBINARY |
TINYINT | TINYINT |
TINYTEXT | VARCHAR |
VARBINARY | VARBINARY |
VARCHAR | VARCHAR |
YEAR | BIGINT |
操作步驟
登錄 OceanBase 管理控制臺,購買數據同步任務。
詳情請參見 購買數據同步任務。
在 數據傳輸 > 數據同步 頁面,單擊新購買的數據同步任務后的 配置。
如果您需要引用已有的任務配置信息,可以單擊 引用配置。詳情請參見 引用和清空數據同步任務配置。
在 選擇源和目標 頁面,配置各項參數。
參數
描述
同步任務名稱
建議使用中文、數字和字母的組合。名稱中不能包含空格,長度不能超過 64 個字符。
源端
如果您已新建 OceanBase 數據源,請從下拉列表中進行選擇。如果未新建,請單擊下拉列表中的 新建數據源,在右側對話框進行新建。參數詳情請參見 新建 OceanBase 數據源。
目標端
如果您已新建 AnalyticDB MySQL 數據源,請從下拉列表中進行選擇。如果未新建,請單擊下拉列表中的 新建數據源,在右側對話框進行新建。參數詳情請參見 新建 ADB 數據源。
標簽(可選)
單擊文本框,在下拉列表中選擇目標標簽。您也可以單擊 管理標簽,進行新建、修改和刪除。詳情請參見 通過標簽管理數據同步任務。
單擊 下一步。在 選擇同步類型 頁面,選擇當前數據同步任務的同步類型。
同步類型包括 結構同步、全量同步 和 增量同步,增量同步 包括 DML 同步(包括 Insert、Delete 和 Update) 和 DDL 同步,您可以根據需求進行自定義配置。詳情請參見 自定義配置 DDL/DML,DDL 同步的支持范圍請參見 DDL 同步范圍。
單擊 下一步。在 選擇同步對象 頁面,選擇當前數據同步任務需要同步的對象。
您可以通過 指定對象 和 匹配規則 兩個入口選擇同步對象。本文為您介紹通過 指定對象 方式選擇同步對象的具體操作,配置匹配規則的詳情請參見 配置匹配規則 中庫到庫的通配規則說明和配置方式。
重要待同步的表名和其中的列名不能包含中文字符。
當數據庫的庫名或表名存在“$$”字符時,會影響數據同步任務的創建。
如果您在 選擇同步類型 步驟已勾選 DDL 同步,建議通過匹配規則方式選擇同步對象,以確保所有符合同步對象規則的新增對象都將被同步。如果您通過指定對象方式選擇同步對象,則新增對象或重命名后的對象將不會被同步。
在 選擇同步對象 區域,選中 指定對象。
在 選擇同步范圍 區域的 源端對象 列表中選中需要同步的對象。您可以選擇一個或多個庫的表作為同步對象。
單擊 >,將其添加至 目標端對象 列表中。
數據傳輸支持通過文本導入對象,并支持對目標端對象進行重命名、設置行過濾、移除單個對象或全部對象等操作。
說明通過 匹配規則 方式選擇同步對象時,重命名能力由匹配規則語法覆蓋,操作處僅支持設置過濾條件,以及選擇分片列和需要同步的列。詳情請參見 配置匹配規則。
操作
步驟
導入對象
在選擇區域的右側列表中,單擊右上角的 導入對象。
在對話框中,單擊 確定。
重要導入會覆蓋之前的操作選擇,請謹慎操作。
在 導入同步對象 對話框中,導入需要導入的對象。
您可以通過導入 CSV 文件的方式進行庫表重命名、設置行過濾條件等操作。詳情請參見 下載和導入同步對象配置。
單擊 檢驗合法性。
完成同步對象導入后,請先檢驗合法性。o'o'o'o目前暫不支持列字段映射。
通過檢驗后,單擊 確定。
重命名
數據傳輸支持重命名同步對象的名稱,詳情請參見 數據庫庫表重命名。
設置
數據傳輸支持
where
條件實現行過濾、選擇需要同步的列,以及設置主鍵列、分布鍵和分區鍵等。在選擇區域的右側列表中,鼠標懸停至目標對象。
單擊顯示的 設置。
在 設置 對話框中,您可以進行以下操作:
輸入標準的 SQL 語句中的
WHERE
子句,來配置行過濾。詳情請參見 SQL 條件過濾數據。重新設置主鍵列。
默認展示當前表的主鍵列(可以是多列)。您可以刪除現有的主鍵列,通過單擊下拉或搜索的方式,重新設置主鍵列(支持多列)。
設置分布鍵(可選)。
設置分區鍵。如果您開啟了設置分區鍵,則需要:
在 分區鍵表達式 文本框中輸入表達式。例如,
PARTITION BY VALUE('id')
。設置生命周期。生命周期用于分區管理,對分區進行排序,超出 N 的分區將被過濾。
單擊 確定。
移除/全部移除
數據傳輸支持在數據映射時,對暫時選中到目標端的單個或多個對象進行移除操作。
移除單個同步對象
在選擇區域的右側列表中,鼠標懸停至目標對象,單擊顯示的 移除,即可移除該同步對象。
移除全部同步對象
在選擇區域的右側列表中,單擊右上角的 全部移除。在對話框中,單擊 確定,即可移除全部同步對象。
單擊 下一步。在 同步選項 頁面,配置各項參數。
全量同步
在 選擇同步類型 頁面,選中 全量同步,才會顯示下述參數。
參數
描述
讀取并發配置
該參數用于配置全量同步階段從源端讀取數據的并發數,最大限制為 512.并發數過高可能會造成源端壓力過大,影響業務。
寫入并發配置
該參數用于配置全量同步階段往目標端寫入數據的并發數,最大限制為 512。并發數過高可能會造成目標端壓力過大,影響業務。
全量同步速率限制
您可以根據實際需求決定是否開啟全量同步速率限制。如果開啟,請設置 RPS(全量同步階段每秒最多可以同步至目標端的數據行數的最大值限制)和 BPS(全量同步階段每秒最多可以同步至目標端的數據量的最大值限制)。
說明此處設置的 RPS 和 BPS 僅作為限速限流能力,全量同步實際可以達到的性能受限于源端、目標端、實例規格配置等因素的影響。
目標端表對象存在記錄時處理策略
選擇 忽略:目標端表對象存在數據時,如果原數據與寫入數據沖突,數據傳輸采用將沖突數據記錄日志,保留原數據不變的策略進行數據寫入。
重要選擇 忽略,全量校驗將使用 IN 模式拉取數據,無法校驗目標端多數據的場景,并且校驗性能存在一定程度降級。
選擇默認值 停止遷移:當目標端表對象存在數據時,全量遷移會報錯不允許遷移,請處理好目標端數據后再繼續遷移。
重要如果出錯后單擊恢復,數據傳輸將忽略該配置選項,繼續遷移表數據,請謹慎操作。
增量同步
在 選擇同步類型 頁面,選中 增量同步,才會顯示下述參數。
參數
描述
寫入并發配置
該參數用于配置增量同步階段往目標端寫入數據的并發數,最大限制為 512。并發數過高可能會造成目標端壓力過大,影響業務。
增量同步速率限制
您可以根據實際需求決定是否開啟增量同步速率限制。如果開啟,請設置 RPS(增量同步階段每秒最多可以同步至目標端的數據行數的最大值限制)和 BPS(增量同步階段每秒最多可以同步至目標端的數據量的最大值限制)。
說明此處設置的 RPS 和 BPS 僅作為限速限流能力,增量同步實際可以達到的性能受限于源端、目標端、實例規格配置等因素的影響。
增量同步起始位點
如果選擇同步類型時已選擇 全量同步,則不支持修改該參數。
如果選擇同步類型時未選擇 全量同步,但選擇了 增量同步,請在此處指定同步某個時間節點之后的數據,默認為當前系統時間。詳情請參見 設置增量同步位點。
單擊 預檢查。
在 預檢查 環節,數據傳輸會檢測源端和目標端的連接情況。如果預檢查報錯:
您可以在排查并處理問題后,重新執行預檢查,直至預檢查成功。
您也可以單擊錯誤預檢查項操作列中的 跳過,會彈出對話框提示您跳過本操作的具體影響,確認可以跳過后,請單擊對話框中的 確定。
預檢查成功后,單擊 啟動任務。
如果您暫時無需啟動任務,請單擊 保存。后續您只能在 同步任務列表 頁面手動啟動任務或通過批量操作啟動任務。批量操作的詳情請參見 批量操作數據同步任務。
數據傳輸支持在數據同步任務運行過程中修改同步對象,詳情請參見 查看和修改同步對象及其過濾條件。數據同步任務啟動后,會根據選擇的同步類型依次執行,詳情請參見 查看同步詳情。
如果數據同步任務運行報錯(通常由于網絡不通或進程啟動過慢導致),您可以在數據同步任務的列表或詳情頁面,單擊 恢復。