本文介紹如何使用通過傳輸服務(wù)(Data Transmission Service,簡稱DTS)將MyBase MySQL遷移至RDS MySQL。

前提條件

注意事項(xiàng)

類型說明
源庫限制
  • 待遷移的表需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導(dǎo)致目標(biāo)數(shù)據(jù)庫中出現(xiàn)重復(fù)數(shù)據(jù)。
  • 如遷移對象為表級別,且需進(jìn)行編輯(如表列名映射),則單次遷移任務(wù)僅支持遷移至多1000張表。當(dāng)超出數(shù)量限制,任務(wù)提交后會顯示請求報(bào)錯,此時(shí)建議您拆分待遷移的表,分批配置多個任務(wù),或者配置整庫的遷移任務(wù)。
  • 如需進(jìn)行增量遷移,Binlog日志:
    • 需開啟,并且binlog_format為row、binlog_row_image為full。否則預(yù)檢查階段提示報(bào)錯,且無法成功啟動數(shù)據(jù)遷移任務(wù)。
    • 如為增量遷移任務(wù),DTS要求源數(shù)據(jù)庫的本地Binlog日志保存24小時(shí)以上,如為全量遷移和增量遷移任務(wù),DTS要求源數(shù)據(jù)庫的本地Binlog日志至少保留7天以上(您可在全量遷移完成后將Binlog保存時(shí)間設(shè)置為24小時(shí)以上),否則DTS可能因無法獲取Binlog而導(dǎo)致任務(wù)失敗,極端情況下甚至可能會導(dǎo)致數(shù)據(jù)不一致或丟失。由于您所設(shè)置的Binlog日志保存時(shí)間低于DTS要求的時(shí)間進(jìn)而導(dǎo)致的問題,不在DTS的SLA保障范圍內(nèi)。

  • 源庫的操作限制:
    • 在庫表結(jié)構(gòu)遷移和全量遷移階段,請勿執(zhí)行庫或表結(jié)構(gòu)變更的DDL操作,否則數(shù)據(jù)遷移任務(wù)會失敗。
    • 在全量遷移和增量遷移過程中,DTS會以Session級別暫時(shí)禁用約束檢查以及外鍵級聯(lián)操作。若任務(wù)運(yùn)行時(shí)源庫存在級聯(lián)更新、刪除操作,可能會導(dǎo)致數(shù)據(jù)不一致。
    • 如僅執(zhí)行全量數(shù)據(jù)遷移,請勿向源實(shí)例中寫入新的數(shù)據(jù),否則會導(dǎo)致源和目標(biāo)數(shù)據(jù)不一致。為實(shí)時(shí)保持?jǐn)?shù)據(jù)一致性,建議選擇結(jié)構(gòu)遷移、全量數(shù)據(jù)遷移和增量數(shù)據(jù)遷移。
其他限制
  • 建議源和目標(biāo)庫的MySQL版本保持一致,以保障兼容性。
  • 執(zhí)行數(shù)據(jù)遷移前需評估源庫和目標(biāo)庫的性能,同時(shí)建議業(yè)務(wù)低峰期執(zhí)行數(shù)據(jù)遷移。否則全量數(shù)據(jù)遷移時(shí)DTS占用源和目標(biāo)庫一定讀寫資源,可能會導(dǎo)致數(shù)據(jù)庫的負(fù)載上升。
  • 由于全量數(shù)據(jù)遷移會并發(fā)執(zhí)行INSERT操作,導(dǎo)致目標(biāo)數(shù)據(jù)庫的表產(chǎn)生碎片,因此全量遷移完成后目標(biāo)數(shù)據(jù)庫的表存儲空間會比源實(shí)例的表存儲空間大。
  • 請確認(rèn)DTS對數(shù)據(jù)類型為FLOAT或DOUBLE的列的遷移精度是否符合業(yè)務(wù)預(yù)期。DTS會通過ROUND(COLUMN,PRECISION)來讀取這兩類列的值。如果沒有明確定義其精度,DTS對FLOAT的遷移精度為38位,對DOUBLE的遷移精度為308位。
  • DTS會嘗試恢復(fù)七天之內(nèi)遷移失敗任務(wù)。因此業(yè)務(wù)切換至目標(biāo)實(shí)例前,請務(wù)必結(jié)束或釋放該任務(wù),或者將DTS訪問目標(biāo)實(shí)例賬號的寫權(quán)限用revoke命令回收掉。避免該任務(wù)被自動恢復(fù)后,源端數(shù)據(jù)覆蓋目標(biāo)實(shí)例的數(shù)據(jù)。
  • 目標(biāo)庫為RDS MySQL時(shí),DTS會自動在RDS MySQL中創(chuàng)建數(shù)據(jù)庫,如果待遷移的數(shù)據(jù)庫名稱不符合RDS MySQL的定義規(guī)范,您需要在配置遷移任務(wù)之前在RDS MySQL中創(chuàng)建數(shù)據(jù)庫。相關(guān)操作,請參見創(chuàng)建數(shù)據(jù)庫。
  • DTS會在源庫定時(shí)更新`dts_health_check`.`ha_health_check`表以推進(jìn)Binlog位點(diǎn)。

費(fèi)用說明

遷移類型鏈路配置費(fèi)用公網(wǎng)流量費(fèi)用
結(jié)構(gòu)遷移和全量數(shù)據(jù)遷移不收費(fèi)。不收費(fèi)。
增量數(shù)據(jù)遷移收費(fèi),詳情請參見計(jì)費(fèi)概述。

遷移類型

  • 庫表結(jié)構(gòu)遷移

    DTS將源庫中遷移對象的結(jié)構(gòu)定義遷移到目標(biāo)庫。

    說明
    • 目前DTS支持結(jié)構(gòu)遷移的對象為表、視圖、觸發(fā)器、存儲過程和存儲函數(shù)。
    • 在結(jié)構(gòu)遷移時(shí),DTS會將視圖、存儲過程和函數(shù)中的DEFINER轉(zhuǎn)換為INVOKER。
    • 由于DTS不遷移USER信息,因此在調(diào)用目標(biāo)庫的視圖、存儲過程和函數(shù)時(shí),需要對調(diào)用者授予讀寫權(quán)限。
  • 全量遷移

    DTS將源庫中遷移對象的存量數(shù)據(jù),全部遷移到目標(biāo)庫中。

  • 增量遷移

    DTS在全量遷移的基礎(chǔ)上,將源庫的增量更新數(shù)據(jù)遷移到目標(biāo)庫中。通過增量數(shù)據(jù)遷移可以實(shí)現(xiàn)在自建應(yīng)用不停機(jī)的情況下,平滑地完成數(shù)據(jù)遷移。

支持增量遷移的SQL操作

操作類型SQL操作語句
DMLINSERT、UPDATE、DELETE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

數(shù)據(jù)庫賬號的權(quán)限要求

數(shù)據(jù)庫庫表結(jié)構(gòu)遷移全量遷移增量遷移
源MyBase MySQL實(shí)例SELECT權(quán)限SELECT權(quán)限讀寫權(quán)限
目標(biāo)RDS MySQL實(shí)例讀寫權(quán)限

數(shù)據(jù)庫賬號創(chuàng)建及授權(quán)方法:

操作步驟

  1. 進(jìn)入遷移任務(wù)的列表頁面。
    1. 登錄DMS數(shù)據(jù)管理服務(wù)。
    2. 在頂部菜單欄中,單擊集成與開發(fā)(DTS)。
    3. 在左側(cè)導(dǎo)航欄,選擇數(shù)據(jù)傳輸(DTS) > 數(shù)據(jù)遷移
    說明 您也可以登錄新版DTS遷移任務(wù)的列表頁面。
  2. 遷移任務(wù)右側(cè),選擇遷移實(shí)例所屬地域。
    說明 新版DTS遷移任務(wù)列表頁面,需要在頁面左上角選擇遷移實(shí)例所屬地域。
  3. 單擊創(chuàng)建任務(wù),配置源庫及目標(biāo)庫信息。
    警告 選擇源和目標(biāo)實(shí)例后,建議您仔細(xì)閱讀頁面上方顯示的使用限制,否則可能會導(dǎo)致任務(wù)失敗或數(shù)據(jù)不一致。
    類別配置說明
    任務(wù)名稱

    DTS會自動生成一個任務(wù)名稱,建議配置具有業(yè)務(wù)意義的名稱(無唯一性要求),便于后續(xù)識別。

    源庫信息選擇已有的DMS數(shù)據(jù)庫實(shí)例(可選,如未創(chuàng)建可忽略此處選擇,直接在下方配置數(shù)據(jù)庫信息即可)
    您可以按實(shí)際需求,選擇是否使用已有實(shí)例。
    • 如使用已有實(shí)例,下方數(shù)據(jù)庫信息將自動填入,您無需重復(fù)輸入。
    • 如不使用已有實(shí)例,您需要輸入下方的數(shù)據(jù)庫信息。
    數(shù)據(jù)庫類型選擇MySQL
    接入方式選擇云實(shí)例
    實(shí)例地區(qū)選擇源MyBase MySQL實(shí)例所屬地域。
    是否跨阿里云賬號本案例為同一阿里云賬號間遷移,選擇不跨賬號。
    說明 如需進(jìn)行跨賬號遷移,請選擇跨賬號,具體操作請參見跨云賬號實(shí)現(xiàn)數(shù)據(jù)同步或遷移。
    RDS實(shí)例ID選擇源MyBase MySQL實(shí)例ID。
    數(shù)據(jù)庫賬號填入源MyBase MySQL實(shí)例的數(shù)據(jù)庫賬號,權(quán)限要求請參見數(shù)據(jù)庫賬號的權(quán)限要求。
    數(shù)據(jù)庫密碼

    填入該數(shù)據(jù)庫賬號對應(yīng)的密碼。

    連接方式

    根據(jù)需求選擇非加密連接SSL安全連接。如果設(shè)置為SSL安全連接,您需要提前開啟MyBase MySQL實(shí)例的SSL加密功能。

    目標(biāo)庫信息選擇已有的DMS數(shù)據(jù)庫實(shí)例(可選,如未創(chuàng)建可忽略此處選擇,直接在下方配置數(shù)據(jù)庫信息即可)

    本示例無需選擇,輸入下方的數(shù)據(jù)庫信息即可。

    數(shù)據(jù)庫類型選擇MySQL
    接入方式選擇云實(shí)例。
    實(shí)例地區(qū)選擇目標(biāo)RDS MySQL實(shí)例所屬地域。
    RDS實(shí)例ID選擇目標(biāo)RDS MySQL實(shí)例ID。
    數(shù)據(jù)庫賬號填入目標(biāo)RDS實(shí)例的數(shù)據(jù)庫賬號,權(quán)限要求請參見數(shù)據(jù)庫賬號的權(quán)限要求。
    數(shù)據(jù)庫密碼

    填入該數(shù)據(jù)庫賬號對應(yīng)的密碼。

    連接方式

    根據(jù)需求選擇非加密連接SSL安全連接。如果設(shè)置為SSL安全連接,您需要提前開啟RDS MySQL實(shí)例的SSL加密功能,詳情請參見設(shè)置SSL加密。

  4. 配置完成后,單擊頁面下方的測試連接以進(jìn)行下一步。
    如果源或目標(biāo)數(shù)據(jù)庫是阿里云數(shù)據(jù)庫實(shí)例(例如RDS MySQL、云數(shù)據(jù)庫MongoDB版等),DTS會自動將對應(yīng)地區(qū)DTS服務(wù)的IP地址添加到阿里云數(shù)據(jù)庫實(shí)例的白名單;如果源或目標(biāo)數(shù)據(jù)庫是ECS上的自建數(shù)據(jù)庫,DTS會自動將對應(yīng)地區(qū)DTS服務(wù)的IP地址添到ECS的安全規(guī)則中,您還需確保自建數(shù)據(jù)庫沒有限制ECS的訪問;如果源或目標(biāo)數(shù)據(jù)庫是IDC自建數(shù)據(jù)庫或其他云數(shù)據(jù)庫,則需要您手動添加對應(yīng)地區(qū)DTS服務(wù)的IP地址,以允許來自DTS服務(wù)器的訪問。DTS服務(wù)的IP地址,請參見DTS服務(wù)器的IP地址段。
    警告 DTS自動添加或您手動添加DTS服務(wù)的公網(wǎng)IP地址段可能會存在安全風(fēng)險(xiǎn),一旦使用本產(chǎn)品代表您已理解和確認(rèn)其中可能存在的安全風(fēng)險(xiǎn),并且需要您做好基本的安全防護(hù),包括但不限于加強(qiáng)賬號密碼強(qiáng)度防范、限制各網(wǎng)段開放的端口號、內(nèi)部各API使用鑒權(quán)方式通信、定期檢查并限制不需要的網(wǎng)段,或者使用通過內(nèi)網(wǎng)(專線/VPN網(wǎng)關(guān)/智能網(wǎng)關(guān))的方式接入。
  5. 配置任務(wù)對象及高級配置。
    配置說明
    遷移類型
    • 如果只需要進(jìn)行全量遷移,請同時(shí)選中庫表結(jié)構(gòu)遷移全量遷移。
    • 如果需要進(jìn)行不停機(jī)遷移,請同時(shí)選中庫表結(jié)構(gòu)遷移、全量遷移增量遷移。
    說明 如果未選擇增量遷移,為保障數(shù)據(jù)一致性,數(shù)據(jù)遷移期間請勿在源實(shí)例中寫入新的數(shù)據(jù)。
    目標(biāo)已存在表的處理模式
    • 預(yù)檢查并報(bào)錯攔截:檢查目標(biāo)數(shù)據(jù)庫中是否有同名的表。如果目標(biāo)數(shù)據(jù)庫中沒有同名的表,則通過該檢查項(xiàng)目;如果目標(biāo)數(shù)據(jù)庫中有同名的表,則在預(yù)檢查階段提示錯誤,數(shù)據(jù)遷移任務(wù)不會被啟動。

      說明 如果目標(biāo)庫中同名的表不方便刪除或重命名,您可以更改該表在目標(biāo)庫中的名稱,請參見庫表列名映射 。
    • 忽略報(bào)錯并繼續(xù)執(zhí)行:跳過目標(biāo)數(shù)據(jù)庫中是否有同名表的檢查項(xiàng)。
      警告 選擇為忽略報(bào)錯并繼續(xù)執(zhí)行,可能導(dǎo)致數(shù)據(jù)不一致,給業(yè)務(wù)帶來風(fēng)險(xiǎn),例如:
      • 表結(jié)構(gòu)一致的情況下,在目標(biāo)庫遇到與源庫主鍵的值相同的記錄,則會保留目標(biāo)庫中的該條記錄,即源庫中的該條記錄不會遷移至目標(biāo)庫中。
      • 表結(jié)構(gòu)不一致的情況下,可能導(dǎo)致只能遷移部分列的數(shù)據(jù)或遷移失敗,請謹(jǐn)慎操作。
    源庫觸發(fā)器遷移方式

    請根據(jù)實(shí)際情況選擇遷移觸發(fā)器的方式,若您待遷移的對象不涉及觸發(fā)器,則無需配置。更多信息,請參見同步或遷移源庫中的觸發(fā)器。

    開啟遷移評估評估源庫待遷移對象的結(jié)構(gòu)等是否滿足目標(biāo)庫要求,您可以根據(jù)實(shí)際情況選擇或者
    說明 若選擇,則可能會增加預(yù)檢查時(shí)間。您可以在預(yù)檢查階段查看評估結(jié)果,評估結(jié)果不影響預(yù)檢查結(jié)果。
    目標(biāo)庫對象名稱大小寫策略

    您可以配置目標(biāo)實(shí)例中遷移對象的庫名、表名和列名的英文大小寫策略。默認(rèn)情況下選擇DTS默認(rèn)策略,您也可以選擇與源庫、目標(biāo)庫默認(rèn)策略保持一致。更多信息,請參見目標(biāo)庫對象名稱大小寫策略

    源庫對象

    源庫對象框中單擊待遷移的對象,然后單擊向右小箭頭將其移動到已選擇對象框。

    說明 遷移對象選擇的粒度為庫、表、列。若選擇的遷移對象為表或列,其他對象(如視圖、觸發(fā)器、存儲過程)不會被遷移至目標(biāo)庫。
    已選擇對象
    • 如需更改單個遷移對象在目標(biāo)實(shí)例中的名稱,請右擊已選擇對象中的遷移對象,設(shè)置方式,請參見庫表列名單個映射。
    • 如需批量更改遷移對象在目標(biāo)實(shí)例中的名稱,請單擊已選擇對象方框右上方的批量編輯,設(shè)置方式,請參見庫表列名批量映射
    說明
    • 如果使用了對象名映射功能,可能會導(dǎo)致依賴這個對象的其他對象遷移失敗。
    • 如需設(shè)置WHERE條件過濾數(shù)據(jù),請?jiān)?span id="z68uejxpaoma" class="ph uicontrol" data-tag="uicontrol" id="uicontrol-yuu-hnh-if3">已選擇對象中右擊待遷移的表,在彈出的對話框中設(shè)置過濾條件。設(shè)置方法請參見通過SQL條件過濾任務(wù)數(shù)據(jù)。
    • 如需按庫或表級別選擇增量遷移的DML或DDL操作,請?jiān)?span id="z68uejxpaoma" class="ph uicontrol" data-tag="uicontrol" id="uicontrol-we9-py4-whw">已選擇對象中右擊待遷移對象,并在彈出的對話框中選擇所需增量遷移的DML和DDL操作。支持的操作請參見支持增量遷移的SQL操作。
  6. 單擊下一步高級配置,進(jìn)行高級配置。
    • 數(shù)據(jù)校驗(yàn)配置

      若您需要使用數(shù)據(jù)校驗(yàn)功能,配置方法請參見配置數(shù)據(jù)校驗(yàn)。

    • 高級配置
      配置說明
      設(shè)置告警
      是否設(shè)置告警,當(dāng)遷移失敗或延遲超過閾值后,將通知告警聯(lián)系人。
      復(fù)制源表Online DDL工具執(zhí)行過程的臨時(shí)表到目標(biāo)庫
      若源庫使用數(shù)據(jù)管理DMS(Data Management)或gh-ost執(zhí)行Online DDL變更,您可以選擇是否遷移Online DDL變更產(chǎn)生的臨時(shí)表數(shù)據(jù)。
      重要 DTS任務(wù)暫不支持使用pt-online-schema-change等類似工具執(zhí)行Online DDL變更,否則會導(dǎo)致DTS任務(wù)失敗。
      • :遷移Online DDL變更產(chǎn)生的臨時(shí)表數(shù)據(jù)。
        說明 Online DDL變更產(chǎn)生的臨時(shí)表數(shù)據(jù)過大,可能會導(dǎo)致遷移任務(wù)延遲。
      • 否,適配DMS Online DDL:不遷移Online DDL變更產(chǎn)生的臨時(shí)表數(shù)據(jù),只遷移源庫使用數(shù)據(jù)管理DMS(Data Management)執(zhí)行的原始DDL數(shù)據(jù)。
        說明 該方案會導(dǎo)致目標(biāo)庫鎖表。
      • 否,適配gh-ost:不遷移Online DDL變更產(chǎn)生的臨時(shí)表數(shù)據(jù),只遷移源庫使用gh-ost執(zhí)行的原始DDL數(shù)據(jù),同時(shí)您可以使用默認(rèn)的或者自行配置gh-ost影子表和無用表的正則表達(dá)式。
        說明 該方案會導(dǎo)致目標(biāo)庫鎖表。
      是否遷移賬號
      請根據(jù)實(shí)際情況選擇是否遷移源庫的賬號信息。若您選擇,您還需要選擇待遷移的賬號并確認(rèn)賬號權(quán)限。
      重要
      • 任務(wù)使用的源和目標(biāo)數(shù)據(jù)庫賬號,需要具有元數(shù)據(jù)表mysql.user、mysql.db、mysql.columns_priv、mysql.tables_priv的SELECT權(quán)限。
      • 目標(biāo)庫已存在的賬號和系統(tǒng)賬號(如root、mysql.infoschema、mysql.session、mysql.sys等)不支持遷移。
      源、目標(biāo)庫無法連接重試時(shí)間
      在遷移任務(wù)啟動后,若源庫或目標(biāo)庫連接失敗則DTS會報(bào)錯,并會立即進(jìn)行持續(xù)的重試連接,默認(rèn)重試720分鐘,您也可以在取值范圍(10~1440分鐘)內(nèi)自定義重試時(shí)間,建議設(shè)置30分鐘以上。如果DTS在設(shè)置的時(shí)間內(nèi)重新連接上源、目標(biāo)庫,遷移任務(wù)將自動恢復(fù)。否則,遷移任務(wù)將失敗。
      說明
      • 針對同源或者同目標(biāo)的多個DTS實(shí)例,網(wǎng)絡(luò)重試時(shí)間以后創(chuàng)建任務(wù)的設(shè)置為準(zhǔn)。
      • 由于連接重試期間,DTS將收取任務(wù)運(yùn)行費(fèi)用,建議您根據(jù)業(yè)務(wù)需要自定義重試時(shí)間,或者在源和目標(biāo)庫實(shí)例釋放后盡快釋放DTS實(shí)例。
      源庫、目標(biāo)庫出現(xiàn)其他問題后的重試時(shí)間
      在遷移任務(wù)啟動后,若源庫或目標(biāo)庫出現(xiàn)非連接性的其他問題(如DDL或DML執(zhí)行異常),則DTS會報(bào)錯并會立即進(jìn)行持續(xù)的重試操作,默認(rèn)持續(xù)重試時(shí)間為10分鐘,您也可以在取值范圍(1~1440分鐘)內(nèi)自定義重試時(shí)間,建議設(shè)置10分鐘以上。如果DTS在設(shè)置的重試時(shí)間內(nèi)相關(guān)操作執(zhí)行成功,遷移任務(wù)將自動恢復(fù)。否則,遷移任務(wù)將會失敗。
      重要 源庫、目標(biāo)庫出現(xiàn)其他問題后的重試時(shí)間的值需要小于源庫、目標(biāo)庫無法連接后的重試時(shí)間的值。
      配置ETL功能
      選擇是否配置ETL功能。關(guān)于ETL的更多信息,請參見什么是ETL流式ETL
  7. 上述配置完成后,單擊頁面下方的下一步保存任務(wù)并預(yù)檢查。
    說明
    • 在遷移任務(wù)正式啟動之前,會先進(jìn)行預(yù)檢查。只有預(yù)檢查通過后,才能成功啟動遷移任務(wù)。
    • 如果預(yù)檢查失敗,請單擊失敗檢查項(xiàng)后的查看詳情,并根據(jù)提示修復(fù)后重新進(jìn)行預(yù)檢查。
    • 如果預(yù)檢查產(chǎn)生警告:
      • 對于不可以忽略的檢查項(xiàng),請單擊失敗檢查項(xiàng)后的查看詳情,并根據(jù)提示修復(fù)后重新進(jìn)行預(yù)檢查。
      • 對于可以忽略無需修復(fù)的檢查項(xiàng),您可以依次單擊點(diǎn)擊確認(rèn)告警詳情、確認(rèn)屏蔽、確定重新進(jìn)行預(yù)檢查,跳過告警檢查項(xiàng)重新進(jìn)行預(yù)檢查。如果選擇屏蔽告警檢查項(xiàng),可能會導(dǎo)致數(shù)據(jù)不一致等問題,給業(yè)務(wù)帶來風(fēng)險(xiǎn)。
  8. 預(yù)檢查通過率顯示為100%時(shí),單擊下一步購買。
  9. 購買頁面,選擇數(shù)據(jù)遷移實(shí)例的鏈路規(guī)格,詳細(xì)說明請參見下表。
    類別參數(shù)說明
    信息配置鏈路規(guī)格

    DTS為您提供了不同性能的遷移規(guī)格,遷移鏈路規(guī)格的不同會影響遷移速率,您可以根據(jù)業(yè)務(wù)場景進(jìn)行選擇,詳情請參見數(shù)據(jù)遷移鏈路規(guī)格說明。

  10. 配置完成后,閱讀并選中《數(shù)據(jù)傳輸(按量付費(fèi))服務(wù)條款》。
  11. 單擊購買并啟動,遷移任務(wù)正式開始,您可在數(shù)據(jù)遷移界面查看具體進(jìn)度。