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