全部產品
Search
文件中心

ApsaraDB RDS:從自建MySQL遷移至RDS MySQL執行個體

更新時間:Sep 16, 2025

Data Transmission Service支援在不影響業務正常啟動並執行情況下,將部署在本地、ECS或其他雲上的MySQL資料庫遷移至RDS MySQL執行個體。DTS支援庫表結構遷移、全量遷移以及增量遷移,同時使用這三種遷移類型可以實現在自建應用不停服的情況下,平滑地完成自建MySQL資料庫的遷移上雲。

前提條件

  • 自建MySQL(源庫)資料庫版本需為MySQL 5.1、5.5、5.6、5.7、8.0。

  • 目標RDS執行個體的可用儲存空間需大於自建MySQL資料庫中已使用的儲存空間。

遷移方案概述

DTS提供以下三種遷移類型,在自建資料庫遷移至RDS MySQL時,建議您同時配置結構、全量和增量遷移,實現自建應用在不停機的情況下平滑遷移上雲。

  • 庫表結構遷移:遷移庫表結構、視圖、觸發器、預存程序和函數。

  • 全量遷移:遷移源庫中的存量資料。

  • 增量遷移:在全量遷移的基礎上,將源庫的增量資料移轉到目標庫中。

常見遷移方案

遷移方案

業務停機時間

資料一致性

費用

適用情境

結構+全量+增量遷移(推薦)

不停機(業務不中斷)

無論遷移期間是否有資料寫入,遷移完成後(增量遷移無延遲)資料一致。

收費

生產環境遷移,要求不停機或停機時間最短。

結構+全量遷移

較長(需等待全量遷移完成)

  • 遷移期間有資料寫入:資料不一致。

  • 遷移期間無資料寫入:資料一致。

免費

能容忍長時間停機的業務或測試環境。

計費說明

使用DTS將自建MySQL遷移至RDS MySQL時,庫表結構遷移、全量遷移和公網流量均免費,以下內容收費:

  • 增量遷移:當配置遷移任務時選擇了增量遷移,則在增量遷移正常運行期間計費(庫表結構遷移和全量遷移運行期間、增量遷移暫停或失敗期間均不收費)。

  • 資料校正:當配置遷移任務時選擇了資料校正,可能會產生資料校正費用

注意事項

  • 主鍵限制:所有待遷移的表必須包含主鍵或唯一約束,且約束內的欄位值具有唯一性,否則可能導致目標庫出現資料重複。

  • DDL限制:在庫表結構遷移和全量遷移階段,請勿執行DDL操作(如庫表結構變更),否則資料移轉任務會失敗。

  • DML限制:如果僅執行全量遷移任務(無增量遷移),請勿向源執行個體中寫入新的資料,否則會導致源端和目標端資料不一致。

  • 表數量限制:若遷移對象為表層級且需編輯列名映射,單次任務最多支援1000張表。超出此限制時提交任務會報錯,請拆分為多個子任務。

  • 字元集限制:若待遷移的資料中包含四位元組儲存的內容(例如生僻字、表情等資訊),則目標端接收資料的資料庫和表必須使用utf8mb4字元集。若您使用DTS遷移庫表結構,則還需將目標庫中執行個體層級的參數character_set_server設定為utf8mb4

  • 帳號遷移限制:如需將源庫帳號遷移至目標庫,還需滿足額外的帳號遷移條件和注意事項

  • 主備切換限制:如果源庫有主備結構且在遷移時發生了主備切換,則會導致遷移失敗。

  • MySQL 8.0隱藏列限制:若源庫為MySQL 8.0.23及以上版本,且資料包含不可見的隱藏列(包括無主鍵表自動產生的隱藏主鍵),必須先將其設定為可見 (ALTER TABLE ... ALTER COLUMN ... SET VISIBLE;),否則會導致資料丟失。

  • 不支援遷移以下內容

    • 使用注釋文法定義的解析器(Parser)。

    • 不記錄Binlog的操作(如物理備份恢複、外鍵級聯)所產生的資料。

點擊展開查看詳細注意事項

類型

說明

源庫限制

  • 頻寬要求:源庫所屬的伺服器需具備足夠出口頻寬,否則將影響資料移轉速率。

  • 待遷移的表需具備主鍵或唯一約束,且欄位具有唯一性,否則可能會導致目標資料庫中出現重複資料。

  • 如遷移對象為表層級,且需進行編輯(如表列名映射),則單次遷移任務僅支援遷移至多1000張表。當超出數量限制,任務提交後會顯示請求報錯,此時建議您拆分待遷移的表,分批配置多個任務,或者配置整庫的遷移任務。

  • 如需進行增量遷移,Binlog日誌:

    • 需開啟,並且binlog_format為row、binlog_row_image為full。否則預檢查階段提示報錯,且無法成功啟動資料移轉任務。

      重要

      如源執行個體自建MySQL是雙主叢集(兩者互為主從),為保障DTS能擷取全部的Binlog日誌,則您需開啟參數log_slave_updates。

    • RDS MySQL執行個體的本地Binlog日誌需保留3天及以上(建議保留7天),自建MySQL資料庫的本地Binlog日誌需保留7天及以上。否則DTS可能會因無法擷取Binlog而導致任務失敗,極端情況下甚至可能會導致資料不一致或資料丟失。由於您所設定的Binlog日誌儲存時間低於DTS要求的時間而導致的問題,不在DTS的SLA保障範圍內。

      說明

      RDS MySQL執行個體的本地Binlog日誌保留時間長度的設定方法,請參見自動刪除本地日誌

  • 源庫的操作限制:

    • 在庫表結構遷移和全量遷移階段,請勿執行庫或表結構變更的DDL操作,否則資料移轉任務會失敗。

    • 若僅執行全量資料移轉,請勿向源執行個體中寫入新的資料,否則會導致源和目標資料不一致。為即時保持資料一致性,建議選擇結構遷移、全量資料移轉和增量資料移轉。

  • 在遷移執行個體運行期間,不記錄Binlog的變更操作所產生的資料(例如通過物理備份功能恢複、級聯操作等產生的資料),不會被遷移到目標庫。

    說明

    若有該情況,您可以在業務允許的前提下,重新遷移全量資料。

  • 若源庫為8.0.23及以後版本的MySQL資料庫,且待遷移的資料中包含不可見的隱藏列,則可能會因為無法擷取該列的資料而導致資料丟失。

    說明
    • 您可以使用ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;命令,將該隱藏列設定為可見。更多資訊,請參見Invisible Columns

    • 無主鍵的表會自動產生不可見的隱藏主鍵,您也需要將該隱藏主鍵設定為可見。更多資訊,請參見Generated Invisible Primary Keys

其他限制

  • 建議源和目標庫的MySQL版本保持一致,以保障相容性。

  • 若源庫有暫存資料表模式的Online DDL變更操作(包括但不限於多表合并情境),則可能導致目標庫資料丟失或遷移執行個體運行失敗。

  • 不支援遷移使用注釋文法定義的解析器(Parser)。

  • 若在遷移執行個體運行時遇到主鍵或唯一鍵衝突:

    • 表結構一致的情況下,在目標庫遇到與源庫主鍵的值相同的記錄:

      • 全量期間,DTS會保留目的地組群中的該條記錄,即源庫中的該條記錄不會遷移至目標資料庫中。

      • 增量期間,DTS不會保留目的地組群中的該條記錄,即源庫中的該條記錄會覆蓋至目標資料庫中。

    • 表結構不一致的情況下,可能導致只能遷移部分列的資料或遷移失敗,請謹慎操作。

  • 若目標庫為8.0.23及以後版本的MySQL資料庫,且接收資料的列中包含不可見的隱藏列,則可能會因為無法找到寫入資料的目標列,導致DTS執行個體運行失敗或資料丟失。

    說明
    • 您可以使用ALTER TABLE <table_name> ALTER COLUMN <column_name> SET VISIBLE;命令,將該隱藏列設定為可見。更多資訊,請參見Invisible Columns

    • 無主鍵的表會自動產生不可見的隱藏主鍵,您也需要將該隱藏主鍵設定為可見。更多資訊,請參見Generated Invisible Primary Keys

  • 若您遷移資料時未使用DTS提供的庫表結構遷移,則需要自行確保欄位的相容性,否則可能會導致執行個體失敗或資料丟失。例如,當源表的欄位為text類型,而接收資料的目標欄位的類型為varchar(255)時,若源表中存在大欄位,則可能會導致資料截斷。

  • 若待遷移的資料中包含需要四位元組儲存的內容(例如生僻字、表情等資訊),則目標端接收資料的資料庫和表必須使用utf8mb4字元集。

    說明

    若您使用DTS遷移庫表結構,則需將目標庫中執行個體層級的參數character_set_server設定為utf8mb4。

  • 執行資料移轉前需評估源庫和目標庫的效能,同時建議業務低峰期執行資料移轉。否則全量資料移轉時DTS佔用源和目標庫一定讀寫資源,可能會導致資料庫的負載上升。

  • 由於全量資料移轉會並發執行INSERT操作,導致目標資料庫的表產生片段,因此全量遷移完成後目標資料庫的表格儲存體空間會比源執行個體的表格儲存體空間大。

  • 請確認DTS對資料類型為FLOAT或DOUBLE的列的遷移精度是否符合業務預期。DTS會通過ROUND(COLUMN,PRECISION)來讀取這兩類列的值。如果沒有明確定義其精度,DTS對FLOAT的遷移精度為38位,對DOUBLE的遷移精度為308位。

  • DTS會嘗試恢複七天之內遷移失敗任務。因此,在業務切換至目標執行個體前,請務必結束或釋放該任務,或者使用revoke命令回收DTS訪問目標執行個體帳號的寫入權限。避免該任務被自動回復後,源端資料覆蓋目標執行個體的資料。

  • 若目標庫的DDL寫入失敗,DTS任務會繼續運行,您需要在任務日誌中查看執行失敗的DDL。查看任務日誌的方法,請參見查詢任務日誌

  • 若您將列名僅大小寫不同的欄位寫入到目標MySQL資料庫的同一個表中,可能會因為MySQL資料庫列名大小寫不敏感,導致遷移結果不符合預期。

  • 在資料移轉完成後(執行個體的運行狀態已完成),建議使用analyze table <表名>命令以確認資料均已寫入目標表。例如,在目標MySQL資料庫觸發HA切換機制後,可能會導致資料唯寫到了記憶體,從而造成資料丟失。

  • 若RDS MySQL執行個體已開通全密態(EncDB)功能,則不支援全量資料移轉。

    說明

    開啟透明資料加密TDE(Transparent Data Encryption)功能的RDS MySQL執行個體支援庫表結構遷移、全量資料移轉和增量資料移轉。

  • 若您需要遷移源庫中的帳號,則還需滿足相應的前提條件,並瞭解相關注意事項。更多資訊,請參見遷移資料庫帳號

  • 若執行個體運行失敗,DTS技術支援人員將在8小時內嘗試恢複該執行個體。在恢複失敗執行個體的過程中,可能會對該執行個體進行重啟、調整參數等操作。

    說明

    在調整參數時,僅會修改DTS執行個體的參數,不會對資料庫中的參數進行修改。可能修改的參數,包括但不限於修改執行個體參數中的參數。

特殊情況

  • 當源庫為自建MySQL時:

    • 遷移時源庫進行主備切換,會導致遷移任務失敗。

    • 由於DTS的延遲時間是根據遷移到目標庫最後一條資料的時間戳記和目前時間戳對比得出,源庫長時間未執行DML操作可能導致延遲資訊不準確。如果任務顯示的延遲時間過大,您可以在源庫執行一個DML操作來更新延遲資訊。

      說明

      如果遷移對象選擇為整庫,您還可以建立心跳錶,心跳錶每秒定期更新或者寫入資料。

    • DTS會在源庫定時執行CREATE DATABASE IF NOT EXISTS `test`命令以推進Binlog位點。

    • 若源庫為Amazon Aurora MySQL或其他叢集模式的MySQL執行個體,請確保任務配置的網域名稱或IP地址及其解析結果為始終為RW(讀寫)節點地址,否則可能會導致遷移任務無法正常運行。

  • 當源庫為RDS MySQL時:

    • 若您需要遷移增量資料,則不記錄交易記錄的RDS MySQL執行個體(如RDS MySQL 5.6版本的唯讀執行個體)不支援作為源庫。

    • DTS會在源庫定時執行CREATE DATABASE IF NOT EXISTS `test`命令以推進Binlog位點。

  • 當目標庫為RDS MySQL時:

    DTS會自動在RDS MySQL中建立資料庫,如果待遷移的資料庫名稱不符合RDS MySQL的定義規範,您需要在配置遷移任務之前在RDS MySQL中建立資料庫。相關操作,請參見管理資料庫

階段一:準備工作

授權DTS訪問雲資源

  1. 使用阿里雲帳號(主帳號)訪問快速授權頁面,單擊確認授權

  2. 在執行完授權操作後,如果頁面出現提示EntityAlreadyExists.RoleEntityAlreadyExists.Role.Policy,則表明當前阿里雲帳號已授予DTS訪問雲資源的許可權,您可以繼續完成後續準備工作。

    screenshot_2025-03-21_13-37-47

建立資料庫帳號並授權

使用DTS進行資料移轉時,源庫帳號和目標庫帳號必須具備如下許可權:

資料庫帳號

庫表結構遷移

全量遷移

增量遷移

自建MySQL帳號

SELECT許可權

  • 待遷移對象的SELECT許可權。

  • REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW許可權。

  • 建庫建表的許可權,以允許DTS建立庫test,用於推進Binlog位點。

RDS MySQL帳號

讀寫權限

您可以使用已有資料庫帳號(需具備相關許可權)完成遷移任務,也可以通過以下方式分別在源庫和目標庫建立並授權用於遷移的資料庫帳號:

自建MySQL帳號

-- 建立遷移專用帳號(dts_user和Your_Password123需修改為您自己的資料庫帳號和密碼)
CREATE USER 'dts_user'@'%' IDENTIFIED BY 'Your_Password123';

-- 授予SELECT許可權(用於結構遷移、全量遷移)
GRANT SELECT ON *.* TO 'dts_user'@'%';

-- 授權增量遷移所需額外許可權
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW ON *.* TO 'dts_user'@'%';

-- 允許DTS建立心跳錶,用於推進Binlog位點,監控增量同步處理延遲
GRANT CREATE ON *.* TO 'dts_user'@'%'; 

FLUSH PRIVILEGES;

RDS MySQL帳號

建議使用RDS MySQL高許可權帳號,您可以通過如下方式建立:

  1. 訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。

  2. 在左側導覽列單擊帳號管理,然後單擊创建账号

  3. 账号类型:選擇高許可權帳號,其他參數(如帳號名稱和密碼)按控制台要求填寫。

確認源庫接入方式並添加白名單

您需要根據自建MySQL資料庫類型選擇合適的接入方式。同時,若您的自建資料庫只允許與特定IP地址建立串連,您需要將DTS伺服器的IP位址區段加入到相應資料庫的安全設定(防火牆、白名單、安全性群組等)中,以允許DTS伺服器的訪問。

自建資料庫類型

推薦接入方式

白名單與配置

本地自建資料庫

(有公網地址)

公網IP

需手動添加DTS伺服器IP地址白名單

本地自建資料庫

(無公網地址)

  • 雲企業網CEN

  • 資料庫網關DG

  • 專線/VPN網關/智能網關

ECS自建資料庫

ECS自建資料庫

系統自動添加DTS服務IP位址區段。

RDS MySQL(目標庫)執行個體的接入方式為雲執行個體,系統會自動添加DTS服務IP位址區段進RDS執行個體白名單中,無需您手動設定。

(如需增量遷移)配置源庫Binlog

如果您需要使用增量遷移,源庫Binlog需完成以下配置並重啟MySQL使配置生效:

  • 源庫需開啟本地Binlog日誌,且Binlog日誌需保留7天及以上。

  • 源庫binlog_format參數需設定為rowbinlog_row_image參數需設定為full

  • 如果自建MySQL是雙主叢集(兩者互為主從),為保障DTS能擷取全部的Binlog日誌,您需開啟參數log_slave_updates

您可以通過以下命令配置源庫Binlog:

Linux命令

  1. 使用vim命令,修改設定檔my.cnf中的如下參數。

    log_bin=mysql_bin
    binlog_format=row
    
    # MySQL 8.0以下版本通過expire_logs_days設定binlog儲存時間長度,預設為0(永不到期)
    # MySQL 8.0以上版本通過binlog_expire_logs_seconds設定binlog儲存時間長度,預設為2592000秒(30天)
    # 如果您修改過MySQL中Binlog保留時間長度且小於7天,可以通過以下參數重新設定Binlog儲存時間長度為7天及以上
    # expire_logs_days=7
    # binlog_expire_logs_seconds=604800
    
    # 建議設定為大於1的整數
    server_id=2
    
    # 當自建MySQL的版本大於5.6時,則必須設定該項。
    binlog_row_image=full
    
    # 當自建資料庫為雙主叢集時,需開啟此參數
    # log_slave_updates=ON
  2. 修改完成後,重啟MySQL進程。

    /etc/init.d/mysqld restart

Windows命令

  1. 修改設定檔my.ini中的如下參數。

    log_bin=mysql_bin
    binlog_format=row
    
    # MySQL 8.0以下版本通過expire_logs_days設定binlog儲存時間長度,預設為0(永不到期)
    # MySQL 8.0以上版本通過binlog_expire_logs_seconds設定binlog儲存時間長度,預設為2592000秒(30天)
    # 如果您修改過MySQL中Binlog保留時間長度且小於7天,可以通過以下參數重新設定Binlog儲存時間長度為7天及以上
    # expire_logs_days=7
    # binlog_expire_logs_seconds=604800
    
    # 建議設定為大於1的整數
    server_id=2
    
    # 當自建MySQL的版本大於5.6時,則必須設定該項。
    binlog_row_image=full
    
    # 當自建資料庫為雙主叢集時,需開啟此參數
    # log_slave_updates=ON
  2. 修改完成後,重啟MySQL服務。 您可以通過Windows中的服務管理員重啟服務,或使用如下命令重啟服務:

    net stop mysql
    net start mysql

階段二:配置遷移任務

  1. 登入Data Transmission Service控制台,在左側導覽列選擇資料移轉,然後單擊建立任務

  2. 配置源庫及目標庫資訊

    源庫配置

    配置項

    說明

    資料庫類型

    選擇MySQL

    接入方式

    選擇準備工作中確認的源庫接入方式,本文以本地自建資料庫(有公網地址)為例,對應接入方式為公網IP

    執行個體地區

    選擇源MySQL資料庫所屬地區。如果源庫地區不在可選地區範圍內,就近選擇即可。

    網域名稱或IP地址

    填入源庫外網地址或IP。如源庫地址具有公用DNS可解析的網域名稱,推薦優先以網域名稱方式接入。

    連接埠

    填入源庫的服務連接埠(需開放至公網),預設為3306

    資料庫帳號

    填入準備工作中建立的帳號或符合許可權要求的已有帳號。

    資料庫密碼

    填入該資料庫帳號對應的密碼。

    串連方式

    請根據實際情況選擇非加密串連SSL安全連線

    • 若自建MySQL未開啟SSL加密,請選擇非加密串連

    • 若自建MySQL已開啟SSL加密,請選擇SSL安全連線。同時,您還需要上傳CA 憑證並填寫CA 密鑰

    目標庫配置

    配置項

    說明

    資料庫類型

    選擇MySQL

    接入方式

    選擇雲執行個體

    執行個體地區

    選擇RDS MySQL執行個體所在地區。

    是否跨阿里雲帳號

    選擇不跨帳號

    RDS執行個體ID

    選擇目標RDS MySQL執行個體ID。

    資料庫帳號

    填入RDS MySQL執行個體的資料庫帳號,推薦使用高許可權帳號

    資料庫密碼

    填入該資料庫帳號對應的密碼。

    串連方式

    根據資料庫實際情況選擇非加密串連SSL安全連線。如果設定為SSL安全連線,您需要提前開啟RDS MySQL執行個體的SSL加密功能,詳情請參見使用雲端認證快速開啟SSL鏈路加密

  3. 測試源庫與目標庫串連

    在頁面下方單擊測試連接以進行下一步,並在彈出的DTS伺服器訪問授權對話方塊單擊測試連接。若測試不通過,請根據錯誤提示檢查網路、帳號或許可權配置。

  4. 配置任務對象

    您需要依次完成以下對象配置進階配置資料校正配置內容。

    對象配置

    在對象配置頁面中,您可以參考下表描述,結合業務實際情況配置遷移類型、待遷移的庫表、觸發器和事件遷移、目標庫大小寫策略及已存在表的處理模式等內容。在配置完成後,單擊下一步高級配置

    配置

    說明

    遷移類型

    • 如果只需要進行全量遷移,建議同時選中庫表結構遷移全量遷移

    • 如果需要進行不停機遷移,建議同時選中庫表結構遷移全量遷移增量遷移

    說明
    • 若未選中庫表結構遷移,請確保目標庫中存在接收資料的資料庫和表,並根據實際情況,在已選擇對象框中使用庫表列名映射功能。

    • 若未選中增量遷移,為保障資料一致性,資料移轉期間請勿在源執行個體中寫入新的資料。

    源庫觸發器遷移方式

    請根據實際情況選擇遷移觸發器的方式,若您待遷移的對象不涉及觸發器,則無需配置。更多資訊,請參見配置同步或遷移觸發器的方式

    說明

    僅當遷移類型同時選擇了庫表結構遷移增量遷移時才可以配置。

    開啟遷移評估

    評估源庫和目標庫的結構(如索引長度、預存程序、依賴的表等)是否滿足要求,您可以根據實際情況選擇或者

    說明
    • 僅當遷移類型選擇了庫表結構遷移時才可以配置。

    • 若選擇,則可能會增加預檢查時間。您可以在預檢查階段查看評估結果,評估結果不影響預檢查結果。

    目標已存在表的處理模式

    • 預檢查並報錯攔截:檢查目標資料庫中是否有同名的表。如果目標資料庫中沒有同名的表,則通過該檢查專案;如果目標資料庫中有同名的表,則在預檢查階段提示錯誤,資料移轉任務不會被啟動。

      說明

      如果目標庫中同名的表不方便刪除或重新命名,您可以更改該表在目標庫中的名稱,請參見庫表列名映射

    • 忽略報錯並繼續執行:跳過目標資料庫中是否有同名表的檢查項。

      警告

      選擇為忽略報錯並繼續執行,可能導致資料不一致,給業務帶來風險,例如:

      • 表結構一致的情況下,在目標庫遇到與源庫主鍵的值相同的記錄:

        • 全量期間,DTS會保留目的地組群中的該條記錄,即源庫中的該條記錄不會遷移至目標資料庫中。

        • 增量期間,DTS不會保留目的地組群中的該條記錄,即源庫中的該條記錄會覆蓋至目標資料庫中。

      • 表結構不一致的情況下,可能導致只能遷移部分列的資料或遷移失敗,請謹慎操作。

    是否遷移 Event

    請根據實際情況選擇是否遷移源庫中的事件(Event)。若您選擇,則還需遵循相關要求並進行後續操作。更多資訊,請參見同步或遷移事件

    目標庫對象名稱大小寫策略

    您可以配置目標執行個體中遷移對象的庫名、表名和列名的英文大小寫策略。預設情況下選擇DTS預設策略,您也可以選擇與源庫、目標庫預設策略保持一致。更多資訊,請參見目標庫對象名稱大小寫策略

    源庫對象

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

    說明

    遷移對象選擇的粒度為庫、表、列。若選擇的遷移對象為表或列,其他對象(如視圖、觸發器、預存程序)不會被遷移至目標庫。

    已選擇對象

    • 如需更改單個遷移對象在目標執行個體中的名稱,請右擊已選擇對象中的遷移對象,設定方式,請參見庫表列名單個映射

    • 如需批量更改遷移對象在目標執行個體中的名稱,請單擊已選擇對象方框右上方的大量編輯,設定方式,請參見庫表列名批量映射

    說明
    • 如果使用了對象名映射功能,可能會導致依賴這個對象的其他對象遷移失敗。

    • 如需設定WHERE條件過濾資料,請在已選擇對象中右擊待遷移的表,在彈出的對話方塊中設定過濾條件。設定方法請參見設定過濾條件

    • 如需按庫或表層級選擇遷移的SQL操作,請在已選擇對象中右擊待遷移對象,並在彈出的對話方塊中選擇所需遷移的SQL操作。

    進階配置(可選)

    進階配置是基於正常DTS遷移任務上的微調(如斷連重試時間、遷移速率限制、監控警示等)及特殊情況的處理(如DTS專屬叢集、源表Online DDL工具執行過程的暫存資料表)。如無以下進階配置需求,可不修改此頁面,保持預設值,單擊下一步資料校正

    配置

    說明

    選擇調度該任務的專屬叢集

    DTS預設將任務調度到共用叢集上,您無需選擇。若您希望任務更加穩定,可以購買專屬叢集來運行DTS遷移任務。

    複製源表Online DDL工具執行過程的暫存資料表到目標庫

    若源庫使用Data Management(Data Management)或gh-ost執行Online DDL變更,您可以選擇是否遷移Online DDL變更產生的暫存資料表資料。

    重要

    DTS任務暫不支援使用pt-online-schema-change等類似工具執行Online DDL變更,否則會導致DTS任務失敗。

    • :遷移Online DDL變更產生的暫存資料表資料。

      說明

      Online DDL變更產生的暫存資料表資料過大,可能會導致遷移任務延遲。

    • 否,適配DMS Online DDL:不遷移Online DDL變更產生的暫存資料表資料,只遷移源庫使用Data Management(Data Management)執行的原始DDL語句。

      說明

      該方案會導致目標庫鎖表。

    • 否,適配gh-ost:不遷移Online DDL變更產生的暫存資料表資料,只遷移源庫使用gh-ost執行的原始DDL語句,同時您可以使用預設的或者自行配置gh-ost影子表和無用表的Regex。

      說明

      該方案會導致目標庫鎖表。

    是否遷移帳號

    請根據實際情況選擇是否遷移源庫的帳號資訊。若您選擇遷移,還需要選擇待遷移的帳號並確認帳號許可權。

    源庫、目標庫無法串連後的重試時間

    在遷移任務啟動後,若源庫或目標庫串連失敗則DTS會報錯,並會立即進行持續的重試串連,預設重試720分鐘,您也可以在取值範圍(10~1440分鐘)內自訂重試時間,建議設定30分鐘以上。如果DTS在設定的時間內重新串連上源、目標庫,遷移任務將自動回復。否則,遷移任務將失敗。

    說明
    • 針對同源或者同目標的多個DTS執行個體,網路重試時間以後建立任務的設定為準。

    • 由於串連重試期間,DTS將收取任務運行費用,建議您根據業務需要自訂重試時間,或者在源和目標庫執行個體釋放後儘快釋放DTS執行個體。

    源庫、目標庫出現其他問題後的重試時間

    在遷移任務啟動後,若源庫或目標庫出現非串連性的其他問題(如DDL或DML執行異常),則DTS會報錯並會立即進行持續的重試操作,預設持續重試時間為10分鐘,您也可以在取值範圍(1~1440分鐘)內自訂重試時間,建議設定10分鐘以上。如果DTS在設定的重試時間內相關操作執行成功,遷移任務將自動回復。否則,遷移任務將會失敗。

    重要

    源庫、目標庫出現其他問題後的重試時間的值需要小於源庫、目標庫無法串連後的重試時間的值。

    是否限制全量遷移速率

    在全量遷移階段,DTS將佔用源庫和目標庫一定的讀寫資源,可能會導致資料庫的負載上升。您可以根據實際情況,選擇是否對全量遷移任務進行限速設定(設定每秒查詢源庫的速率QPS每秒全量遷移的行數RPS每秒全量遷移的數據量(MB)BPS),以緩解目標庫的壓力。

    說明
    • 僅當遷移類型選擇了全量遷移,才有此配置項。

    • 您也可以在遷移執行個體運行後,調整全量遷移的速率

    是否限制增量遷移速率

    您也可以根據實際情況,選擇是否對增量遷移任務進行限速設定(設定每秒增量遷移的行數RPS每秒增量遷移的數據量(MB)BPS),以緩解目標庫的壓力。

    說明
    • 僅當遷移類型選擇了增量遷移,才有此配置項。

    • 您也可以在遷移執行個體運行後,調整增量遷移的速率

    環境標籤

    您可以根據實際情況,選擇用於標識執行個體的環境標籤。本樣本無需選擇。

    是否去除正反向任務的心跳錶sql

    根據業務需求選擇是否在DTS執行個體運行時,在源庫中寫入心跳SQL資訊。

    • :不在源庫中寫入心跳SQL資訊,DTS執行個體可能會顯示有延遲。

    • :在源庫中寫入心跳SQL資訊,可能會影響源庫的物理備份和複製等功能。

    配置ETL功能

    根據業務需求選擇是否配置ETL功能,對資料進行加工處理。

    • :配置ETL功能,您還需要在文字框中輸入資料處理語句

    • :不配置ETL功能。

    監控警示

    根據業務需求選擇是否設定警示並接收警示通知。

    • 不設定:不設定警示。

    • 設定:設定警示。您還需要設定警示閾值警示通知,當遷移失敗或延遲超過閾值後,系統將進行警示通知。

    資料校正(可選)

    資料校正用於監控源庫與目標庫資料差異,支援在不停服的情況下對源庫和目標庫進行校正,協助您及時探索資料和結構不一致的問題。資料校正類型分為以下三類:

    資料校正方式

    費用

    說明

    全量校正

    收費

    對全量任務中需要校正的資料進行校正。

    增量校正

    對增量任務的資料進行校正。

    結構校正

    免費

    對需要校正的對象進行結構校正。

    如需使用資料校正功能,可以在配置遷移任務時配置資料校正,也可以在遷移任務完成後單獨配置資料校正任務。如無需資料校正,可直接進行後續步驟。

    點擊展開資料校正配置詳情

    1. 設定數據校正方式:可根據業務實際需求選擇一種或多種資料校正方式。

      全量校正

      若您勾選了全量校正,您還需要設定如下表所示參數。

      參數

      說明

      全量校正模式

      • 按行抽樣進行全字段校驗:配置抽樣百分比,對抽中的資料進行全欄位校正,取值為10~100的整數。

      • 按錶行數進行校正:對全量任務資料的行數進行校正,不會對具體的資料內容進行校正。

      說明

      按錶行數進行校正的全量校正模式不收費;按行抽樣進行全字段校驗的全量校正模式按實際校正資料量收費。

      全量校正時間規則

      當前僅支援立即開始

      全量校正逾時設定

      • 不設定:全量校正任務逾時不會強制結束。

      • 設定:設定全量校正任務結束的延遲時間。在全量校正任務啟動後開始計時,若校正任務未在指定時間完成則強制結束。取值為1~72的整數。

      全量校驗基準

      • 預設:以源庫和目標庫的合集為基準,校正源庫和目標庫資料的一致性。

      • 源庫:以源庫為基準,校正目標庫與源庫資料的一致性(不校正目標庫比源庫多的資料)。

      • 目標庫:以目標庫為基準,校正源庫與目標庫資料的一致性(不校正源庫比目標庫多的資料)。

      全量校驗每秒讀取的最大數據行數 RPS

      全量資料校正會佔用資料庫一定的讀取資源,您可以根據實際情況對全量校正任務進行限速設定(每秒讀取的資料行數和資料量),以緩解資料庫的壓力。

      說明

      參數值為0時表示無限制,當全量校驗每秒讀取的最大數據行數 RPS全量校驗每秒讀取最大的Byte數byte/s均為0時,表示不限速。

      全量校驗每秒讀取最大的Byte數byte/s

      增量校正

      若您勾選了增量校正,您還需要設定如下表所示參數。

      參數

      說明

      增量校正基準

      您可以根據實際情況,篩選需要校正的DML操作。

    2. 設定校正對象

      您可以在已選擇對象框中勾選不需要進行資料校正的對象,然後單擊移除進行移除。

      說明

      DTS預設已將待同步或遷移的對象移動至已選擇對象框。

    3. 配置校正警示。

      根據業務需求,選擇配置如下表所示參數。

      說明

      您也可以在DTS執行個體運行後,設定或修改資料校正警示

      參數

      說明

      全量校正警示

      • 不設定:不設定警示。

      • 設定:設定警示,您還需要選擇和配置警示規則。警示規則如下:

        • 當全量校正任務失敗時觸發警示。

        • 設定資料不一致的閾值,當全量校正任務不一致資料大於等於設定的閾值時觸發警示。

      增量校正警示

      • 不設定:不設定警示。

      • 設定:設定警示,您還需要選擇和配置警示規則。警示規則如下:

        • 當增量校正任務失敗時觸發警示。

        • 設定資料不一致的周期數、統計周期和不一致數量閾值,當增量校正任務累計在設定的若干個周期,資料不一致記錄量均大於等於設定的閾值時觸發警示。

        • 設定資料延遲的周期數、統計周期和延遲時間閾值,當增量校正任務累計在設定的若干個周期,延遲均大於等於設定的閾值時觸發警示。

      重要

      若您設定了校正警示,且需要在校正任務觸發警示時接收警示通知,還需要前往CloudMonitor平台進行警示訊息訂閱設定。更多資訊,請參見通過CloudMonitor平台為DTS任務設定警示規則

階段三:預檢查與啟動

  1. 在完成階段二的配置後,單擊下一步儲存任務並預檢查。DTS將檢查源庫和目標庫的環境、許可權、配置等是否滿足遷移要求。

  2. 等待預檢查完成。

    • 預檢查通過率顯示為100%:則說明環境已準備就緒,可以進行後續購買和啟動。

    • 預檢查失敗或出現不可忽略的警告:請單擊失敗檢查項後的查看詳情,並根據提示修複後重新進行預檢查。

    • 出現可忽略的警告項:請仔細閱讀警告內容,確認無相關風險後(如資料不一致等問題)可選擇忽略。

  3. 預檢查完全通過後,單擊下一步購買

  4. 選擇資源群組配置(預設為default resource group)和合適的鏈路規格(規格越高,遷移速度越快)。

  5. 閱讀並選中《資料轉送(隨用隨付)服務條款》,單擊購買並啟動,並在彈出的確認對話方塊,單擊確定,任務將自動開始執行。

階段四:資料驗證與業務切換

  1. 等待DTS遷移任務完成

    1. 未包含增量遷移的任務:在全量遷移完成後自動結束,任務運行狀態變為已完成

    2. 包含增量遷移的任務:任務不會自動結束,增量遷移會持續進行(任務運行狀態運行中)。當增量遷移顯示無延遲時,表示源庫與目標庫資料一致,可以進行資料驗證。

  2. 資料驗證

    當遷移任務結束或增量遷移無延遲(低延遲)時,可以進行源庫和目標庫的資料驗證:

    1. 自動校正:在DTS中配置資料校正任務,自動對比源庫和目標庫的資料。

    2. 手動抽樣校正:您可以從多種維度手動校正資料(如對比源庫和目標庫的錶行數、核心業務資料等),抽樣驗證資料一致性。以下為範例程式碼:

      -- 樣本1:在源庫和目標庫分別執行,對比錶行數
      SELECT COUNT(*) FROM your_table;
      
      -- 樣本2:在源庫和目標庫分別執行,對比關鍵業務指標,如某時間段內的訂單總金額
      SELECT SUM(amount) FROM orders WHERE create_time >= '2024-01-01';
  3. 業務切換

    資料驗證完成後,建議您選擇業務低峰期,將應用服務內的自建資料庫連接地址修改為RDS MySQL執行個體的串連地址,完成業務切換。如果DTS遷移任務中包含增量遷移,請在切換完成後及時釋放該任務,避免遷移任務持續計費。

附錄1:遷移類型說明

遷移類型

說明

庫表結構遷移

將源庫中待遷移對象的結構定義遷移到目標庫:

  • 當前僅支援表、視圖、觸發器、預存程序和函數的遷移,且遷移過程中不會修改視圖的select_statement、預存程序的routine_body和函數的routine_body

  • 在遷移結構時,DTS會將待遷移視圖、預存程序和函數中的DEFINER轉換為INVOKER(即將安全驗證方式SQL SECURITY的值轉換為INVOKER),並將DEFINER設定為遷移任務中使用的目標庫帳號,不會修改源庫的安全驗證方式和DEFINER

  • 由於DTS不遷移USER資訊,因此在調用目標庫的視圖、預存程序和函數時,需要對調用者授予讀寫權限。

全量遷移

將源庫中待遷移對象的存量資料,全部遷移到目標庫中。

增量遷移

在全量遷移的基礎上,將源庫的累加式更新資料移轉到目標庫中。通過增量資料移轉可以實現在自建應用不停機的情況下,平滑地完成資料移轉。

附錄2:增量遷移時支援的SQL操作

操作類型

SQL動作陳述式

DML

INSERT、UPDATE、DELETE

DDL

  • ALTER TABLE、ALTER VIEW

  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW

  • DROP INDEX、DROP TABLE

  • RENAME TABLE

    重要

    RENAME TABLE操作可能導致遷移資料不一致。例如遷移對象只包含某個表,如果遷移過程中源執行個體對該表執行了重新命名操作,那麼該表的資料將不會遷移到目標庫。為避免該問題,您可以在資料移轉配置時將該表所屬的整個資料庫作為遷移對象,且確保RENAME TABLE操作前後的表所屬的資料庫均在遷移對象中。

  • TRUNCATE TABLE

常見問題

  • Q1:測試連接報錯“JDBC: [conn_error, cause: null, message from server: "Host 'XXX' is not allowed to connect to this MySQL server"]; PING: []; TELNET: []; requestId=[XXX]”

    該報錯為JDBC異常,請您檢查JDBC的帳號、密碼及許可權問題,或使用高許可權帳號測試連接。

  • Q2:建立遷移任務,為什麼無法選擇福州地區的RDS執行個體?

    目前DTS不支援福州地區的執行個體。您可以將MySQL 5.7、8.0自建Database Backup上雲