數據庫復制服務(Data Replication Service,簡稱DRS)支持將其他云MySQL數據庫的數據遷移到本云云數據庫MySQL。通過DRS提供的實時遷移任務,實現在數據庫遷移過程中業務和數據庫不停機,業務中斷時間最小化。
本章節主要介紹了通過DRS將其他云MySQL數據庫實時遷移至本云云數據庫MySQL的任務配置流程。包括以下遷移場景:
其他云RDS MySQL實時遷移至本云云數據庫MySQL。
其他云內云主機自建自維護的數據庫遷移至本云云數據庫MySQL
網絡示意圖
圖 其他云RDS MySQL實時遷移示意圖
圖 其他云自建MySQL數據庫實時遷移示意圖
遷移流程
圖 遷移流程圖
遷移建議(重要)
數據庫遷移與環境多樣性和人為操作均有密切關系,為了確保遷移的平順,建議您在進行正式的數據庫遷移之前進行一次演練,可以幫助您提前發現問題并解決問題,如何最小化對數據庫的影響請參考如下建議。
強烈建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性遷移成功率,避免遷移對業務造成性能影響。
遷移須知(重要)
注意在創建遷移任務之前,請您務必仔細閱讀遷移須知。
參考《數據庫復制服務快速入門》中的“ **使用須知** ”章節。
遷移準備
1.權限準備。
當使用DRS將其他云MySQL數據庫的數據遷移到本云云數據庫MySQL實例時,在不同遷移類型的情況下,對源數據庫和目標數據庫的帳號權限要求如表:
表 遷移賬號權限
| 遷移類型 | 全量遷移 | 全量+增量遷移 |
|---|---|---|
| 源數據庫 | SELECT、SHOW VIEW、EVENT。 | SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 |
| 目標數據庫 | SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、WITH GRANT OPTION。 | SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、WITH GRANT OPTION。 |
源數據庫權限設置:
需要確保源數據庫MySQL的帳號權限具備表1的要求。若權限不足,需要在源數據庫端開通高權限的帳號。
目前DRS支持遷移的第三方云廠商有:阿里云,騰訊云和亞馬遜云。
以阿里云云數據庫RDS
MySQL遷移到本云云數據庫MySQL為例,阿里云推薦使用最高權限帳號。一般情況下,默認是沒有開通最高權限帳號的,您需要先創建最高權限帳號。創建最高權限帳號時需要重啟數據庫,建議選擇在合適的時間窗口進行,具體操作及注意事項可以參考阿里云提供的相關指導。
目標數據庫權限設置:
本云數據庫MySQL使用初始帳號即可。
網絡準備
源數據庫需要開放公網訪問。源數據庫的網絡設置:
源數據庫MySQL實例需要開放外網域名的訪問。
以阿里云云數據庫RDS MySQL遷移到本云云數據庫MySQL為例,一般情況下,阿里云RDS MySQL不提供外網地址,需要通過申請外網地址來允許外部的應用對接,具體的操作及注意事項可以參考阿里云提供的相關指導。
目標數據庫的網絡設置:
目標數據庫默認與DRS遷移實例處在同一個VPC內,網絡是互通的,不需要進行任何設置。
安全規則準備
源數據庫的安全規則設置:
源數據庫MySQL實例需要將目標端DRS遷移實例的彈性公網IP添加到其網絡白名單中,確保源數據庫MySQL實例可以與上述彈性公網IP連通。
以阿里云云數據庫RDS MySQL遷移到本云云數據庫MySQL為例,具體設置網絡白名單的操作及注意事項可以參考相關指導。
在設置網絡白名單之前,需要先獲取目標端DRS遷移實例的彈性公網IP,具體方法如下:DRS遷移實例創建成功后,可在“源庫及目標庫”頁面獲取DRS遷移實例的彈性公網IP。
遷移實例EIP
以上講述的是精細配置白名單的方法,還有一種簡單設置白名單的方法,在安全允許的情況下,可以將源數據庫MySQL實例的網絡白名單設置為0.0.0.0/0,代表允許任何IP地址訪問該實例。
上述的網絡白名單是為了進行數據遷移設置的,遷移結束后可以刪除。
目標數據庫安全規則設置:
目標數據庫默認與DRS遷移實例處在同一個VPC,網絡是互通的,DRS可以直接寫入數據到目標數據庫,不需要進行任何設置。
其他事項準備
DRS支持部分與業務和性能強相關的參數遷移,具體參數列表請參見參數列表。若涉及其他參數需要根據用戶具體的業務進行手動設置。
遷移步驟
1.創建遷移任務
-
登錄管理控制臺,在服務列表中選擇“數據庫 > 數據庫復制服務”,進入數據庫復制服務信息頁面。
-
在“實時遷移管理”頁面,單擊右上角“創建遷移任務”,進入遷移任務信息頁面。
-
在“遷移實例”頁面,填選任務信息和遷移實例信息。
圖 遷移實例信息
表 任務信息
參數
描述
任務名稱
任務名稱在4位到64位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。
任務異常通知設置
該項為可選參數,開啟之后,需要填寫手機號碼或者郵箱作為指定收件人。當遷移任務狀態異常時,系統將發送通知給指定收件人。
說明收到確認短信或郵件之后,需要在48小時內處理,否則該功能訂閱無效。
時延閾值
增量遷移中,源數據庫和目標數據庫之間的同步有時會存在一個時間差,稱為時延,單位為秒。
時延閾值設置是指時延超過一定的值后(時間閾值范圍為1—3600s),DRS可以發送通知給指定收件人。
說明首次進入增量遷移階段,會有較多數據等待同步,存在較大的時延,屬于正常情況,不在此功能的監控范圍之內。
描述
描述不能超過256位,且不能包含!=<>&'"特殊字符。
表 遷移實例信息
參數
描述
數據流動方向
選擇入云。
源數據庫引擎
選擇MySQL數據庫引擎。
目標數據庫引擎
選擇MySQL數據庫引擎。
網絡類型
選擇公網網絡。建議您開啟SSL安全連接,SSL約降低20-30%的遷移性能,但保證了數據的安全性。
目標數據庫實例
選擇您所創建的目標MySQL實例。
目標庫讀寫設置
此處以只讀設置為示例。
§? 只讀
遷移中,目標數據庫將轉化為只讀、不可寫入的狀態,遷移任務結束后恢復可讀寫狀態,此選項可有效的確保數據遷移的完整性和成功率,推薦此選項。
§? 讀寫
遷移中,目標數據庫可以讀寫,但需要避免操作或接入應用后會更改遷移中的數據(注意:無業務的程序常常也有微量的數據操作),進而形成數據沖突、任務故障、且無法修復續傳,充分了解要點后可選擇此選項。
遷移模式
此處以全量+增量模式為示例。
§? 全量:該模式為數據庫一次性遷移,適用于可中斷業務的數據庫遷移場景,全量遷移將非系統數據庫的全部數據庫對象和數據一次性遷移至目標端數據庫,包括:表、視圖、存儲過程等。
說明如果用戶只進行全量遷移時,建議停止對源數據庫的操作,否則遷移過程中源數據庫產生的新數據不會同步到目標數據庫。
§? 全量+增量:該模式為數據庫持續性遷移,適用于對業務中斷敏感的場景,通過全量遷移過程中完成的目標端數據庫的初始化后,增量遷移階段通過解析日志等技術,將源端和目標端數據庫保持數據持續一致。
說明選擇“全量+增量”遷移模式,增量遷移可以在全量遷移完成的基礎上實現數據的持續同步,無需中斷業務,實現遷移過程中源業務和數據庫繼續對外提供訪問。
- 在“源庫及目標庫”信息頁面,遷移實例創建成功后,填選源庫信息和目標庫信息,建議您單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
圖 源和目標庫信息
表 源庫信息
| 參數 | 描述 |
|---|---|
| IP地址或域名 | 配置源數據庫MySQL實例的訪問地址或域名。 |
| 端口 | 配置源數據庫MySQL實例的服務端口,可輸入范圍為1~65535間的整數。 |
| 數據庫用戶名 | 訪問源數據庫MySQL的用戶名。 |
| 數據庫密碼 | 訪問源數據庫MySQL的用戶名所對應的密碼。 |
| SSL安全連接 | 在選擇公網網絡進行遷移任務時,為了提升數據在網絡傳輸過程中的安全性,建議您開啟SSL安全連接,對遷移鏈路進行加密,如果開啟,需要您上傳CA證書。 |
表 目標庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建遷移任務時選擇的已創建的MySQL實例,不可進行修改。 |
| 數據庫用戶名 | 訪問目標端MySQL實例的用戶名。 |
| 數據庫密碼 | 訪問目標端MySQL實例的用戶名所對應的密碼。 |
| 所有Definer遷移到該用戶下 | l 是遷移后,所有源數據庫對象的Definer都會遷移至該用戶下,其他用戶需要授權后才具有數據庫對象權限。l 否遷移后,將保持源數據庫對象Definer定義不變,選擇此選項,需要配合下一步用戶權限遷移功能,將源數據庫的用戶全部遷移,這樣才能保持源數據庫的權限體系完全不變。 |
- 在“遷移設置”頁面,設置流速模式、遷移用戶和遷移對象。
圖 遷移對象
表 遷移模式和遷移對象-公網
參數
描述
遷移用戶
數據庫的遷移過程中,遷移用戶需要進行單獨處理。
常見的遷移用戶一般分為三類:可完整遷移的用戶、需要降權的用戶和不可遷移的用戶。您可以根據業務需求選擇“遷移”或者“不遷移”,選擇“遷移”后,可根據需要選擇遷移用戶。
§? 遷移
當您選擇遷移用戶時,請參見《數據庫復制服務用戶指南》中“遷移用戶”章節進行數據庫用戶、權限及密碼的處理。
§? 不遷移
遷移過程中,將不進行用戶和權限的遷移。
遷移對象
遷移對象選擇的粒度可以為數據庫的全對象,對象遷移到目標數據庫實例后,對象名將會保持與源數據庫實例對象名一致且無法修改。
您可以根據業務需求,選擇全部對象遷移或者自定義遷移對象。
§? 全部遷移:將源數據庫中的所有對象全部遷移至目標數據庫。
§? 自定義對象:將自定義選擇的對象遷移至目標數據庫。
說明若選擇部分數據庫進行遷移時,由于存儲過程、視圖等對象可能與其他數據庫的表存在依賴關系,若所依賴的表未遷移,則會導致遷移失敗。建議您在遷移之前進行確認,或選擇全部數據庫進行遷移。
- 在“預檢查”頁面,進行遷移任務預校驗,校驗是否可進行任務遷移。查看檢查結果,如有失敗的檢查項,需要修復失敗項后,單擊“重新校驗”按鈕重新進行遷移任務預校驗。
預檢查失敗項處理建議請參見《數據庫復制服務用戶指南》中的“預檢查失敗項修復方法”。
預檢查完成后,且所有檢查項結果均成功時,單擊“下一步”。
圖 預檢查
說明所有檢查項結果均成功時,若存在告警,需要閱讀并確認告警詳情后才可以繼續執行下一步操作。
1.進入“參數對比”頁面,進行參數對比。
參數對比功能從常規參數和性能參數兩個維度,展示了源數據庫和目標數據庫的參數值是否一致。您可以根據業務需求,決定是否選用該功能。該操作不影響數據的遷移,主要目的是為了確保遷移成功后業務應用的使用不受影響。若您選擇不進行參數對比,可跳過該步驟,單擊頁面右下角“下一步”按鈕,繼續執行后續操作。
若您選擇進行參數對比,請參照如下的步驟操作。
一般情況下,對于常規參數,如果源庫和目標庫存在不一致的情況,建議將目標數據庫的參數值通過“一鍵修改”按鈕修改為和源庫對應參數相同的值。
圖 修改常規參數
對于性能參數,您可以根據業務場景,自定義源數據庫和目標庫的參數值,二者結果可以一致也可以不一致。
若您需要將對比結果一致的性能參數修改為不一致,需要在“目標庫值調整為”一列手動輸入結果,單擊左上角“一鍵修改”按鈕,即可將源數據庫和目標數據庫對應的性能參數值改為不一致。
若您想將對比結果不一致的參數改為一致結果,請參考如下流程進行修改:1.對齊源庫和目標庫的參數值。
當源庫和目標庫對應的參數值出現不一致時,選擇需要修改的參數,單擊“一鍵對齊”按鈕,系統將幫您自動填充目標數據庫的參數值,使其和源庫對應的參數值保持一致。
圖 一鍵對齊參數
說明對齊參數值的操作,您也可以通過手動輸入結果。
2.修改參數值。
源庫和目標庫的不一致參數值對齊后,單擊“一鍵修改”按鈕,系統將按照您當前設置的目標庫參數值進行修改。修改完成后,目標庫的參數值和對比結果會自動進行更新。
圖 修改性能參數
部分參數修改后無法在目標數據庫立即生效,需要重啟才能生效,此時的對比結果顯示為“待重啟,不一致”。建議您在遷移任務啟動之前重啟目標數據庫,或者遷移結束后選擇一個計劃時間重啟。如果您選擇遷移結束后重啟目標數據庫,請合理設置重啟計劃時間,避免參數生效太晚影響業務的正常使用。
在進行參數對比功能時,您可以參見《數據庫復制服務用戶指南》中“參數對比列表”進行參數設置。
3.參數對比操作完成后,單擊“下一步”。
- 在“任務確認”頁面,選擇遷移任務的啟動時間,單擊“啟動任務”,提交遷移任務。
建議您結合定時啟動功能,選擇業務低峰期開始運行遷移任務,相對靜態的數據,遷移時復雜度將會降低。如果遷移不可避免業務高峰期,推薦使用遷移限速功能,即“流速模式”選擇“限速”。
- 遷移任務提交后,您可以返回“實時遷移管理”頁面,查看遷移任務狀態。
2.任務管理
遷移任務啟動后,會經歷全量遷移和增量遷移兩個階段,對于不同階段的遷移任務,您可以進行任務管理。全量遷移查看遷移進度:全量遷移中的任務,您可單擊任務名稱,在“遷移進度”頁簽下,查看全量遷移進度,您可以查看結構、數據、索引遷移的進度,也查看具體遷移對象的遷移進度。當全量遷移進度顯示為100%,表示全量遷移已經完成。
查看遷移明細:遷移明細中,您可以查看具體遷移對象的遷移進度,當“對象數目”和“已遷移對象”相等時,表示該對象已經遷移完成,可通過“查看詳情”查看每個對象的遷移進度。僅白名單用戶該支持功能,您可以通過提交工單的方式進行申請使用。
增量遷移查看時延監控:全量遷移完成后,開始進行增量遷移。對于增量遷移中的任務,您可單擊任務名稱,在“遷移進度”頁簽下,查看增量遷移同步時延,當時延為0s時,說明源數據庫和目標數據庫的數據是實時同步的。您也可以使用“遷移對比”頁簽查看一致性。
圖 查看時延監控
查看遷移對比:為了盡可能減少業務的影響和業務中斷時間,增量遷移中的任務,您可單擊任務名稱,在“遷移對比”頁簽下,建議按照如下流程進行遷移對比,以便確定合適的業務割接時機。
圖 遷移對比流程
具體的遷移對比操作及注意事項請參考《數據庫復制服務用戶指南》中“對比遷移項”章節。
3.割接建議
建議您選擇一個業務低峰期,開始正式系統割接流程。割接前,請您確認至少在業務低峰期有過一次完整的數據對比。可以結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
- 先中斷業務(如果業務負載非常輕,也可以嘗試不中斷業務)。
- 在源數據庫端執行如下語句,并觀察在1-5分鐘內若無任何新會話執行SQL ,則可認為業務已經完全停止。
show processlist
說明上述語句查詢到的進程列表中,包括DRS遷移實例的連接,您需要確認除DRS遷移實例的連接外無任何新會話執行SQL,即可認為業務已經完全停止。
- 通過DRS遷移任務監控頁面進行觀察同步時延,保持實時同步時延為0,并穩定保持一段時間;同時,您可以使用數據級對比功能,進行割接前的最后一次數據級對比,耗時可參考之前的對比記錄。如果時間允許,則選擇全部對比。
如果時間不允許,則推薦對比活躍表,關鍵業務表,第二步對比多次存在差異的表等。
- 確定系統割接時機,業務系統指向本云數據庫,業務對外恢復使用,遷移完成。
4.遷移結束
- 結束遷移任務:業務系統和數據庫切換至本云后,為了防止源數據庫的操作繼續同步到目標數據庫,造成數據覆蓋問題,此時您可選擇結束遷移任務,該操作僅刪除了遷移實例,遷移任務仍顯示在任務列表中,您可以進行查看或刪除。結束遷移任務后,DRS將不再計費。
- 刪除遷移任務:對于已結束的遷移任務,您可選擇刪除任務。該操作將一并刪除遷移任務,刪除遷移任務后,該任務將不會出現在任務列表中。