支持的源和目標數據庫
表 支持的數據庫
源數據庫 目標數據庫
本地自建MySQL數據庫
ECS自建MySQL數據庫
其他云上MySQL數據庫
RDS for MySQL
RDS for MySQL
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時遷移支持的數據庫類型和版本,詳情請參見實時遷移。
使用建議
注意
DRS任務啟動和全量數據遷移階段,請不要在源數據庫執行DDL操作,否則可能導致任務異常。
?如果您使用的是全量遷移模式,確保源和目標數據庫無業務寫入,保證遷移前后數據一致。如果您使用的是全量+增量遷移模式,支持在源數據庫有業務數據寫入的情況下進行遷移。
數據庫遷移與環境多樣性和人為操作均有密切關系,為了確保遷移的平順,建議您在進行正式的數據庫遷移之前進行一次演練,可以幫助您提前發現問題并解決問題。
基于以下原因,建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性遷移成功率,避免遷移對業務造成性能影響。如果遷移不可避免業務高峰期,推薦使用遷移限速功能,即“流速模式”選擇“限速”。
在網絡無瓶頸的情況下,全量遷移會對源數據庫增加約50MB/s的查詢壓力,以及占用2~4個CPU。
遷移無主鍵表時,為了確保數據一致性,會存在3s以內的單表級鎖定。
正在遷移的數據被其他事務長時間鎖死,可能導致讀數據超時。
由于MySQL固有特點限制,CPU資源緊張時,存儲引擎為Tokudb的表,讀取速度可能下降至10%。
DRS并發讀取數據庫,會占用大約6-10個session連接數,需要考慮該連接數對業務的影響。
全量階段讀取表數據時,特別是大表的讀取,可能會阻塞業務上對大表的獨占鎖操作。
- 數據對比
建議您結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
使用須知
在創建遷移任務前,請務必閱讀以下使用須知。
表 使用須知
類型名稱 使用和操作限制 數據庫權限設置 全量遷移最小權限要求: SELECT、SHOW VIEW、EVENT。
源數據庫賬號需要具備如下權限:
SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE ?VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT ?OPTION。當目標庫為8.0.14-8.0.18版本時,還需要有SESSION_VARIABLES_ADMIN權限。
?目標數據庫賬號必須擁有如下權限:
全量+增量最小遷移權限要求:
SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
源數據庫賬號需要具備如下權限:
SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE ?VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT ?OPTION。當目標庫為8.0.14-8.0.18版本時,還需要有SESSION_VARIABLES_ADMIN權限。
目標數據庫賬號必須擁有如下權限:
?用戶遷移最小權限要求:
用戶遷移時,帳戶需要有mysql.user的SELECT權限。
目標數據庫賬號需要有mysql庫的SELECT,INSERT,UPDATE,DELETE權限。
源數據庫要求
源數據庫中的庫名不能包含:'<`>/"以及非ASCII字符。
源數據庫中的表名、視圖名不能包含:'<>/"以及非ASCII字符。
源數據庫中的庫名不允許為ib_logfile。
MySQL源數據庫的binlog日志必須打開,且binlog日志格式必須為Row格式。
在磁盤空間允許的情況下,建議源數據庫binlog保存時間越長越好,建議為3天。
源數據庫expire_logs_days參數值為0,可能會導致遷移失敗。
增量遷移時,必須設置MySQL源數據庫的server_id。如果源數據庫版本小于或等于MySQL5.6,server_id的取值范圍在2-4294967296之間;如果源數據庫版本大于或等于MySQL5.7,server_id的取值范圍在1-4294967296之間。
MySQL源數據庫建議開啟skip-name-resolve,減少連接超時的可能性。
源數據庫GTID狀態建議為開啟狀態。
源庫不支持mysql binlog dump命令。
源數據庫和目標數據庫字符集需保持一致,否則遷移失敗。
源數據庫log_slave_updates參數需設置為開啟狀態,否則會導致遷移失敗。
源數據庫的binlog_row_image參數需設置為FULL,否則會導致遷移失敗。
源數據庫MySQL8.0目前不支持參數lower_case_table_names等于0的遷移。
目標數據庫要求
不支持從高版本遷移到低版本。
建議MySQL目標庫的binlog日志格式為Row格式,否則增量遷移可能出錯。
目標數據庫實例的運行狀態必須正常。
目標數據庫實例必須有足夠的磁盤空間。
除了MySQL系統數據庫之外,目標數據庫不能包含與源數據庫同名的數據庫。
建議目標庫的事務隔離級別至少保證在已提交讀。
DRS遷移時會有大量數據寫入目標庫,目標庫max_allowed_packet 參數過小會導致無法寫入,建議將目標庫max_allowed_packet參數值設置大一點,使其大于100MB。
目標數據庫GTID狀態建議為開啟狀態。
源數據庫和目標數據庫的參數server_uuid相同, 將導致增量遷移失敗。
源數據庫和目標數據庫的參數collation_server需保持一致,否則可能導致遷移失敗。
所選遷移對象和外鍵依賴的表需一起進行遷移,否則會導致遷移失敗。
源數據庫和目標數據庫的參數time_zone需保持一致,否則可能導致遷移失敗。
源數據庫和目標數據庫的sql_mode參數值需保持一致,否則可能導致遷移失敗。
遷移的對象中包含引擎為MyISAM的表,則目標數據庫sql_mode不能包含no_engine_substitution參數,否則可能會導致遷移失敗。
源數據庫和目標數據庫的innodb_strict_mode參數值需保持一致,否則可能導致遷移失敗。
目標數據庫和源數據庫的lower_case_table_names參數需保持一致,否則可能導致遷移失敗。
目標數據庫的log_bin_trust_function_creators參數需設置為on,否則可能導致遷移失敗。
遷移對象約束
支持數據庫、表、視圖、索引、約束、函數、存儲過程、觸發器(TRIGGER)和事件(EVENT)的遷移。
不支持系統庫的遷移以及事件狀態的遷移。
不支持非MyISAM和非InnoDB表的遷移。
操作須知
相互關聯的數據對象要確保同時遷移,避免遷移因關聯對象缺失,導致遷移失敗。常見的關聯關系:視圖引用表、視圖引用視圖、存儲過程/函數/觸發器引用視圖/表、主外鍵關聯表等。
不支持外鍵級聯操作。
由于MySQL本身限制,若源庫的一次性事件(EVENT)設定的觸發時間在遷移開始前,該事件(EVENT)不會遷移到目標庫。
多對一場景下,創建遷移任務時,目標庫讀寫設置需要跟已有任務設置為一致。
由于無主鍵表缺乏行的唯一性標志,網絡不穩定時涉及少量重試,表數據存在少量不一致的可能性。
不支持目標數據庫恢復到全量遷移時間段范圍內的PITR操作。
源庫和目標庫為RDS for MySQL實例時,不支持帶有TDE特性并建立具有加密功能表。
如果源庫MySQL不支持TLS1.2協議,或者為版本較低的自建庫(低于5.6.46或在5.7-5.7.28之間),需提交運維申請才能使用SSL測試連接。
如果源數據庫為自建庫,并且安裝了Percona ?Server for MySQL 5.6.x或Percona Server for MySQL ?5.7.x時,內存管理器必須使用Jemalloc庫,以避免因系統表頻繁查詢帶來的內存回收不及時,并最終導致數據庫Out of Memory問題。
遷移任務目標數據庫可以設置“只讀”和“讀寫”。
?只讀:目標數據庫實例將轉化為只讀、不可寫入的狀態,遷移任務結束后恢復可讀寫狀態,此選項可有效的確保數據遷移的完整性和成功率,推薦此選項。
?讀寫:目標數據庫可以讀寫,但需要避免操作或接入應用后會更改遷移中的數據(注意:無業務的程序常常也有微量的數據操作),進而形成數據沖突、任務故障、且無法修復續傳,充分了解要點后可選擇此選項。建議將expire_log_day參數設置在合理的范圍,確保恢復時斷點處的binlog尚未過期,以保證服務中斷后的順利恢復。
在任務啟動、任務全量遷移階段,不建議對源數據庫做刪除類型的DDL操作,比如刪除數據庫、索引、視圖等,這樣可能會引起任務遷移失敗。
遷移過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
為了保持數據一致性,不允許對正在遷移中的目標數據庫進行修改操作(包括但不限于DDL、DML操作)。
遷移過程中,不允許源庫寫入binlog格式為statement的數據。
遷移過程中,不允許源庫執行清除binlog的操作。
遷移過程中,不允許在源庫創建庫名為ib_logfile的數據庫。
選擇表級對象遷移時,增量遷移過程中不支持對表進行重命名操作。
增量遷移場景下,不支持源數據庫進行恢復到某個備份點的操作(PITR)。
增量遷移階段,支持斷點續傳功能,在主機系統崩潰的情況下,對于非事務性的無主鍵的表可能會出現重復插入數據的情況。
增量遷移支持DDL語句。
當源和目標庫是同一個大版本且為整實例遷移時,增量遷移支持DCL語句,不支持通過更新mysql.user表進行的賬號變更。相關DCL語句可參考。
在結束遷移任務時,將進行所選事件(EVENT)和觸發器(TRIGGER)的遷移。請確保任務結束前,不要斷開源和目標數據庫的網絡連通性,并在結束任務時關注遷移日志上報的狀態,達到數據庫完整遷移效果。
操作步驟
本節將以MySQL到RDS for MySQL的遷移為示例,介紹在VPC網絡場景下,通過數據復制服務管理控制臺配置數據遷移任務的流程。
步驟 1 在“實時遷移管理”頁面,單擊“創建遷移任務”,進入創建遷移任務頁面。
步驟 2 在“遷移實例”頁面,填選任務名稱、描述、遷移實例信息,單擊“下一步”。
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4-50位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
表 遷移實例信息
參數 描述 數據流動方向 選擇入云。
入云指目標數據庫為本云數據庫的場景。源數據庫引擎 選擇MySQL。 目標數據庫引擎 選擇MySQL。 網絡類型 此處選擇VPC網絡。
默認為公網網絡類型,可按照需求選擇VPC網絡、VPN網絡、專線網絡、公網網絡。
VPC網絡:適合云上數據庫之間的遷移。
公網網絡:適合通過公網網絡把其他云下或其他平臺的數據庫遷移到目標數據庫,該類型要求目標數據庫綁定彈性公網IP(EIP)。
VPN網絡:適合通過VPN網絡,實現其他云下自建數據庫與云上數據庫遷移、或云上跨Region的數據庫之間的遷移。
專線網絡:適合通過專線網絡,實現其他云下自建數據庫與云上數據庫遷移、或云上跨Region的數據庫之間的遷移。
目標數據庫實例 用戶所創建的本云關系型數據庫實例。 遷移實例所在子網 選擇遷移實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。
默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保遷移實例創建成功,僅顯示已經開啟DHCP的子網。IP類型 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。
目標庫讀寫設置
只讀
遷移中,目標數據庫實例將轉化為只讀、不可寫入的狀態,遷移任務結束后恢復可讀寫狀態,此選項可有效的確保數據遷移的完整性和成功率,推薦此選項。
讀寫
遷移中,目標數據庫可以讀寫,但需要避免操作或接入應用后會更改遷移中的數據(注意:無業務的程序常常也有微量的數據操作),進而形成數據沖突、任務故障、且無法修復續傳,充分了解要點后可選擇此選項。如果目標庫有其他數據庫需要在遷移時被業務使用,可設置該選項為讀寫。
任務創建后不能修改。遷移模式 全量:該模式為數據庫一次性遷移,適用于可中斷業務的數據庫遷移場景,全量遷移將非系統數據庫的全部數據庫對象和數據一次性遷移至目標端數據庫,包括:表、視圖、存儲過程等。 全量+增量:該模式為數據庫持續性遷移,適用于對業務中斷敏感的場景,通過全量遷移過程中完成的目標端數據庫的初始化后,增量遷移階段通過解析日志等技術,將源端和目標端數據庫保持數據持續一致。說明如果用戶只進行全量遷移時,建議停止對源數據庫的操作,否則遷移過程中源數據庫產生的新數據不會同步到目標數據庫。說明選擇“全量+增量”遷移模式,增量遷移可以在全量遷移完成的基礎上實現數據的持續同步,無需中斷業務,實現遷移過程中源業務和數據庫繼續對外提供訪問。標簽 可選配置,對遷移任務的標識。使用標簽可方便管理您的遷移任務。每個任務最多支持10個標簽配額。
任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見標簽管理。
步驟 3 在“源庫及目標庫”頁面,遷移實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
說明此處源庫類型分為ECS自建庫和RDS實例,需要根據源數據庫的實際來源選擇相應的分類。兩種場景下的參數配置不一樣,需要根據具體場景進行配置。
表 ECS自建庫場景源庫信息
| 參數 | 描述 |
|---|---|
| 源庫類型 | 選擇ECS自建庫。 |
| VPC | 源數據庫實例所在的虛擬專用網絡,可以對不同業務進行網絡隔離。您需要創建或選擇所需的虛擬私有云。 |
| 子網 | 通過子網提供與其他網絡隔離的、可以獨享的網絡資源,以提高網絡安全。子網在可用分區內才會有效,創建源數據庫實例的子網需要開啟DHCP功能,在創建過程中也不能關閉已選子網的DHCP功能。 |
| IP地址或域名 | 源數據庫的IP地址或域名。 |
| 端口 | 源數據庫服務端口,可輸入范圍為1~65535間的整數。 |
| 數據庫用戶名 | 源數據庫的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對遷移鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 最大支持上傳500KB的證書文件。 如果不使用SSL證書,請自行承擔數據安全風險。 |
說明源數據庫的IP地址或域名、數據庫用戶名和密碼,會被系統加密暫存,直至刪除該遷移任務后自動清除。
表 RDS實例場景源庫信息
| 參數 | 描述 |
|---|---|
| 源庫類型 | 選擇RDS實例。 |
| 數據庫實例名稱 | 選擇待遷移的關系型數據庫實例作為源數據庫實例。 |
| 數據庫用戶名 | 源數據庫實例的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
表 目標庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建遷移任務時選擇的關系型數據庫實例,不可進行修改。 |
| 數據庫用戶名 | 目標數據庫對應的數據庫用戶名。 |
| 數據庫密碼 | 目標數據庫的登錄密碼。 |
| 所有Definer遷移到該用戶下 | 是 遷移后,所有源數據庫對象的Definer都會遷移至該用戶下,其他用戶需要授權后才具有數據庫對象權限,如何授權請參考MySQL遷移中Definer強制轉化后如何維持原業務用戶權限體系 否 遷移后,將保持源數據庫對象Definer定義不變,選擇此選項,需要配合下一步用戶權限遷移功能,將源數據庫的用戶全部遷移,這樣才能保持源數據庫的權限體系完全不變。 |
說明數據庫用戶名和密碼將被系統加密暫存,直至該任務刪除后清除。
步驟 4 在“遷移設置”頁面,設置遷移用戶和遷移對象,單擊“下一步”。
表 遷移模式和遷移對象
參數 描述 流速模式 流速模式支持限速和不限速,默認為不限速。
限速
自定義的最大遷移速度,遷移過程中的遷移速度將不會超過該速度。
當流速模式選擇了“限速”時,你需要通過流速設置來定時控制遷移速度。流速設置通常包括限速時間段和流速大小的設置。默認的限速時間段為全天限流,您也可以根據業務需求自定義時段限流。自定義的時段限流支持最多設置3個定時任務,每個定時任務之間不能存在交叉的時間段,未設定在限速時間段的時間默認為不限速。
流速的大小需要根據業務場景來設置,不能超過9999MB/s。
不限速
對遷移速度不進行限制,通常會最大化使用源數據庫的出口帶寬。該流速模式同時會對源數據庫造成讀消耗,消耗取決于源數據庫的出口帶寬。比如源數據庫的出口帶寬為100MB/s,假設高速模式使用了80%帶寬,則遷移對源數據庫將造成80MB/s的讀操作IO消耗。說明限速模式只對全量遷移階段生效,增量遷移階段不生效。
您也可以在創建任務后修改流速模式。具體方法請參見修改流速模式。遷移用戶 數據庫的遷移過程中,遷移用戶需要進行單獨處理。
常見的遷移用戶一般分為三類:可完整遷移的用戶、需要降權的用戶和不可遷移的用戶。您可以根據業務需求選擇“遷移”或者“不遷移”。
是
當您選擇遷移用戶時,請參見遷移用戶章節進行數據庫用戶、權限及密碼的處理。
否
遷移過程中,將不進行數據庫用戶、權限和密碼的遷移。過濾DROP DATABASE 實時遷移過程中,為了降低遷移數據的風險,數據復制服務提供了過濾刪除數據庫操作的功能。
?是,表示實時遷移過程中不會遷移用戶在源數據庫端執行的刪除數據庫的操作。
否,則表示實時遷移過程中將相關操作遷移到目標庫。遷移對象 您可以根據業務需求,選擇全部對象遷移、表級遷移或者庫級遷移。
?全部遷移:將源數據庫中的所有對象全部遷移至目標數據庫,對象遷移到目標數據庫實例后,對象名將會保持與源數據庫實例對象名一致且無法修改。
表級遷移:將選擇的表級對象遷移至目標數據庫。
庫級遷移:將選擇的庫級對象遷移至目標數據庫。
如果有切換源數據庫的操作或源庫遷移對象變化的情況,請務必在選擇遷移對象前單擊右上角的,以確保待選擇的對象為最新源數據庫對象。
說明??? 若選擇部分數據庫進行遷移時,由于存儲過程、視圖等對象可能與其他數據庫的表存在依賴關系,若所依賴的表未遷移,則會導致遷移失敗。建議您在遷移之前進行確認,或選擇全部數據庫進行遷移。
??? 選擇對象的時候,對象名稱的前后空格不顯示,中間如有多個空格只顯示一個空格。
??? 選擇對象的時候支持搜索,以便您快速選擇需要的數據庫對象。
步驟 5 在“預檢查”頁面,進行遷移任務預校驗,校驗是否可進行遷移。
查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行遷移任務預校驗。
預檢查不通過項處理建議請參見預檢查不通過項修復方法。
預檢查完成后,且預檢查通過率為100%時,單擊“下一步”。
說明所有檢查項結果均通過時,若存在待確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 6 進入“參數對比”頁面,進行參數對比。
參數對比功能從常規參數和性能參數兩個維度,展示了源數據庫和目標數據庫的參數值是否一致。您可以根據業務需求,決定是否選用該功能。該操作不影響數據的遷移,主要目的是為了確保遷移成功后業務應用的使用不受影響。
-
若您選擇不進行參數對比,可跳過該步驟,單擊頁面右下角“下一步”按鈕,繼續執行后續操作。
-
若您選擇進行參數對比,請參照如下的步驟操作。
一般情況下,對于常規參數,如果源庫和目標庫存在不一致的情況,建議將目標數據庫的參數值通過“一鍵修改”按鈕修改為和源庫對應參數相同的值。
對于性能參數,您可以根據業務場景,自定義源數據庫和目標庫的參數值,二者結果可以一致也可以不一致。
若您需要將對比結果一致的性能參數修改為不一致,需要在“目標庫值調整為”一列手動輸入需要調整的倍數或結果,單擊左上角“一鍵修改”按鈕,即可將源數據庫和目標數據庫對應的性能參數值改為不一致。
若您想將對比結果不一致的參數改為一致結果,請參考如下流程進行修改:
對齊源庫和目標庫的參數值。
當源庫和目標庫對應的參數值出現不一致時,選擇需要修改的參數,單擊“一鍵對齊”按鈕,系統將幫您自動填充目標數據庫的參數值,使其和源庫對應的參數值保持一致。
說明對齊參數值的操作,您也可以通過手動輸入調整的倍數或結果。
修改參數值。
源庫和目標庫的不一致參數值對齊后,單擊“一鍵修改”按鈕,系統將按照您當前設置的目標庫參數值進行修改。修改完成后,目標庫的參數值和對比結果會自動進行更新。
部分參數修改后無法在目標數據庫立即生效,需要重啟才能生效,此時的對比結果顯示為“待重啟,不一致”。建議您在遷移任務啟動之前重啟目標數據庫,或者遷移結束后選擇一個計劃時間重啟。如果您選擇遷移結束后重啟目標數據庫,請合理設置重啟計劃時間,避免參數生效太晚影響業務的正常使用。
在進行參數對比功能時,您可以參見 參數對比列表章節進行參數設置。
參數對比操作完成后,單擊“下一步”。
步驟 7 在“任務確認”頁面,設置遷移任務的啟動時間,并確認遷移任務信息無誤后,單擊“啟動任務”,提交遷移任務。
表 任務啟動設置
參數 描述 啟動時間 遷移任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”,優選“稍后啟動”。 說明預計遷移任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議您將任務啟動時間設定在業務低峰期,同時預留2-3天校對數據。
步驟 8 遷移任務提交后,您可在“實時遷移管理”頁面,查看并管理自己的任務。
您可查看任務提交后的狀態,狀態請參見 任務狀態說明。
在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。