數(shù)據(jù)復(fù)制服務(wù) (Data Replication Service,簡稱DRS)支持將其他云MongoDB 數(shù)據(jù)庫 的 數(shù)據(jù)遷移 到本云 文檔數(shù)據(jù)庫服務(wù) (Document Database Service,以下簡稱DDS)實例。通過DRS提供的實時 遷移 任務(wù),實現(xiàn)在 數(shù)據(jù)庫遷移 過程中業(yè)務(wù)和數(shù)據(jù)庫不停機,業(yè)務(wù)中斷時間最小化。
本章節(jié)主要介紹了通過DRS將其他 云數(shù)據(jù)庫 實時遷移至本云DDS的任務(wù)配置流程。包括以下遷移場景:
· 其他云MongoDB數(shù)據(jù)庫實時遷移至本云DDS。
· 其他云內(nèi)云主機自建自維護的MongoDB數(shù)據(jù)庫遷移至本云DDS。
網(wǎng)絡(luò)示意圖


遷移流程

遷移建議(重要)
· 數(shù)據(jù)庫遷移與環(huán)境多樣性和人為操作均有密切關(guān)系,為了確保遷移的平順,建議您在進行正式的數(shù)據(jù)庫遷移之前進行一次演練,可以幫助您提前發(fā)現(xiàn)問題并解決問題,如何最小化對數(shù)據(jù)庫的影響請參考如下建議。
· 強烈建議您在啟動任務(wù)時選擇“稍后啟動”功能,將啟動時間設(shè)置在業(yè)務(wù)低峰期,相對靜止的數(shù)據(jù)可以有效提升一次性遷移成功率,避免遷移對業(yè)務(wù)造成性能影響。
遷移須知(重要)
須知:在創(chuàng)建遷移任務(wù)之前,請您務(wù)必仔細閱讀遷移須知。參考《 數(shù)據(jù)復(fù)制 服務(wù)快速入門》中的“使用須知”章節(jié)。
遷移準備
1、權(quán)限準備:
當使用 DRS 將其他云MongoDB數(shù)據(jù)庫的數(shù)據(jù)遷移到本DDS實例時,在不同遷移類型情況下,對源數(shù)據(jù)庫和目標數(shù)據(jù)庫的帳號權(quán)限要求如表1:
|
遷移類型 |
全量遷移 |
全量+增量遷移 |
|---|---|---|
|
源數(shù)據(jù)庫 |
· 副本集:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限。 · 集群:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對config數(shù)據(jù)庫有read權(quán)限。 · 單節(jié)點:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限。 · 如果需要遷移源數(shù)據(jù)庫用戶和角色信息,連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫的系統(tǒng)表system.users,system.roles有讀權(quán)限。 |
· 副本集:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。 · 單節(jié)點:連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。 · 集群:連接源數(shù)據(jù)庫mongos節(jié)點的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對config數(shù)據(jù)庫有read權(quán)限, 連接源數(shù)據(jù)庫分片節(jié)點的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對local數(shù)據(jù)庫有read權(quán)限。 · 如果需要遷移源數(shù)據(jù)庫用戶和角色信息,連接源數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫的系統(tǒng)表system.users,system.roles有讀權(quán)限。 |
|
目標數(shù)據(jù)庫 |
連接目標數(shù)據(jù)庫的用戶權(quán)限需要對admin數(shù)據(jù)庫有readAnyDatabase權(quán)限,對目標數(shù)據(jù)庫有readWrite權(quán)限。 |
|
· 源數(shù)據(jù)庫權(quán)限設(shè)置:
需要確保源數(shù)據(jù)庫MongoDB的帳號權(quán)限具備表1的要求。若權(quán)限不足,需要在源數(shù)據(jù)庫端開通高權(quán)限的帳號。
目前DRS支持遷移的第三方云廠商有:阿里云,騰訊云。
以阿里云云數(shù)據(jù)庫MongoDB遷移到本云DDS為例,阿里云MongoDB默認的初始帳號已經(jīng)具備進行數(shù)據(jù)遷移的能力,使用初始帳號即可。
· 目標數(shù)據(jù)庫權(quán)限設(shè)置:
本云DDS實例使用初始帳號即可。
2、網(wǎng)絡(luò)準備:
源數(shù)據(jù)庫需要開放公網(wǎng)訪問。
· 源數(shù)據(jù)庫的網(wǎng)絡(luò)設(shè)置:
源數(shù)據(jù)庫MongoDB實例需要開放公網(wǎng)域名的訪問。
以阿里云云數(shù)據(jù)庫MongoDB遷移到本云DDS實例為例,一般情況下,阿里云云數(shù)據(jù)庫MongoDB不提供公網(wǎng)地址,需要通過申請公網(wǎng)地址來允許外部的應(yīng)用對接,具體的操作及注意事項可以參考阿里云提供的相關(guān)指導。
· 目標數(shù)據(jù)庫的網(wǎng)絡(luò)設(shè)置:目標端不需要進行設(shè)置。
3、安全規(guī)則準備:
· 源 數(shù)據(jù)庫安全 組規(guī)則設(shè)置:
源數(shù)據(jù)庫MongoDB實例需要將具體的DRS遷移實例的 彈性公網(wǎng)IP 添加到其網(wǎng)絡(luò)白名單中,確保源數(shù)據(jù)庫MongoDB實例可以與上述彈性 公網(wǎng)IP 連通。
以阿里云云數(shù)據(jù)庫MongoDB遷移到本云DDS為例,具體設(shè)置網(wǎng)絡(luò)白名單的操作及注意事項可以參考相關(guān)指導。在設(shè)置網(wǎng)絡(luò)白名單之前,需要先獲取DRS遷移實例的彈性公網(wǎng)IP,具體操作如下:
遷移實例創(chuàng)建成功后,可在“源庫及目標庫”頁面獲取DRS遷移實例的彈性公網(wǎng)IP。如圖4所示:
圖4 遷移實例公網(wǎng)彈性IP
以上講述的是精細配置白名單的方法,還有一種簡單設(shè)置白名單的方法,在安全允許的情況下,可以將源數(shù)據(jù)庫MongoDB實例的網(wǎng)絡(luò)白名單設(shè)置為0.0.0.0/0,代表允許任何IP地址訪問該實例。
上述的網(wǎng)絡(luò)白名單是為了進行數(shù)據(jù)遷移設(shè)置的,遷移結(jié)束后可以刪除。
· 目標數(shù)據(jù)庫安全組規(guī)則設(shè)置:
目標數(shù)據(jù)庫默認與DRS遷移實例處在同一個VPC,網(wǎng)絡(luò)是互通的,DRS可以直接寫入數(shù)據(jù)到目標數(shù)據(jù)庫,不需要進行任何設(shè)置。
4、其他事項準備:
由于遷移過程不會遷移MongoDB數(shù)據(jù)庫的用戶信息以及相關(guān)參數(shù),需要自行將上述信息導出后手動添加到目標DDS中。
遷移步驟
1、創(chuàng)建遷移任務(wù)。
a)登錄管理控制臺,在服務(wù)列表中選擇,進入數(shù)據(jù)復(fù)制服務(wù)信息頁面。
b)在“實時遷移管理”頁面,單擊右上角“創(chuàng)建遷移任務(wù)”,進入遷移任務(wù)信息頁面。
c)在“遷移實例”頁面,填選任務(wù)名稱、通知收件人、描述和遷移實例信息。
圖5 遷移實例信息
|
參數(shù) |
描述 |
|---|---|
|
區(qū)域 |
當前所在區(qū)域,可進行切換。 |
|
任務(wù)名稱 |
任務(wù)名稱在4-50位之間,必須以字母開頭,不區(qū)分大小寫,可以包含字母、數(shù)字、中劃線或下劃線,不能包含其他的特殊字符。 |
|
描述 |
描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
|
任務(wù)異常通知設(shè)置 |
該項為可選參數(shù),開啟之后,選擇對應(yīng)的 SMN 主題,。當同步任務(wù)狀態(tài)異常時,系統(tǒng)將發(fā)送通知。 |
|
SMN主題 |
“任務(wù)異常通知設(shè)置”項開啟后可見,需提前在SMN上申請主題并添加訂閱。 |
|
時延閾值 |
在增量同步階段,源數(shù)據(jù)庫和目標數(shù)據(jù)庫之間的同步有時會存在一個時間差,稱為時延,單位為秒。 時延閾值設(shè)置是指時延超過一定的值后(時延閾值范圍為1—3600s),DRS可以發(fā)送告警通知給指定收件人。告警通知將在時延穩(wěn)定超過設(shè)定的閾值6min后發(fā)送,避免出現(xiàn)由于時延波動反復(fù)發(fā)送告警通知的情況。 說明:· 首次進入增量同步階段,會有較多數(shù)據(jù)等待同步,存在較大的時延,屬于正常情況,不在此功能的監(jiān)控范圍之內(nèi)。 · 設(shè)置時延閾值之前,需要設(shè)置任務(wù)異常通知。 |
|
任務(wù)異常自動結(jié)束時間(天) |
設(shè)置任務(wù)異常自動結(jié)束天數(shù),輸入值必須在14-100之間。 說明: 異常狀態(tài)下的任務(wù)仍然會計費,而長時間異常的任務(wù)無法續(xù)傳和恢復(fù)。設(shè)置任務(wù)異常自動結(jié)束天數(shù)后,異常且超時的任務(wù)將會自動結(jié)束,以免產(chǎn)生不必要的費用。 |
|
參數(shù) |
描述 |
|---|---|
|
數(shù)據(jù)流動方向 |
選擇“入云”。 |
|
源數(shù)據(jù)庫引擎 |
選擇“MongoDB”。 |
|
目標數(shù)據(jù)庫引擎 |
選擇“DDS”。 |
|
網(wǎng)絡(luò)類型 |
選擇公網(wǎng)網(wǎng)絡(luò)。 |
|
目標數(shù)據(jù)庫實例 |
選擇您所創(chuàng)建的本云DDS實例。 |
|
遷移實例所在子網(wǎng) |
選擇遷移實例所在的子網(wǎng)。也可以單擊“查看子網(wǎng)”,跳轉(zhuǎn)至“網(wǎng)絡(luò)控制臺”查看實例所在子網(wǎng)幫助選擇。 默認值為當前所選數(shù)據(jù)庫實例所在子網(wǎng),請選擇有可用IP地址的子網(wǎng)。為確保遷移實例創(chuàng)建成功,僅顯示已經(jīng)開啟DHCP的子網(wǎng)。 |
|
遷移模式 |
· 全量 全量遷移為數(shù)據(jù)庫一次性遷移,適用于可中斷業(yè)務(wù)的數(shù)據(jù)庫遷移場景,全量遷移將非系統(tǒng)數(shù)據(jù)庫的全部數(shù)據(jù)庫對象和數(shù)據(jù)一次性遷移至目標端數(shù)據(jù)庫,包括:集合、索引等。 · 全量+增量 全量+增量遷移為數(shù)據(jù)庫持續(xù)性遷移,適用于對業(yè)務(wù)中斷敏感的場景,通過全量遷移過程完成目標端數(shù)據(jù)庫的初始化后,增量遷移階段通過解析日志等技術(shù),將源端和目標端數(shù)據(jù)庫保持數(shù)據(jù)持續(xù)一致。 |
|
源數(shù)據(jù)庫實例類型 |
需要根據(jù)源數(shù)據(jù)庫的具體來源進行設(shè)置。 · 當源庫類型屬于集群時,該項需要設(shè)置為集群 · 當源庫類型屬于副本集或者單節(jié)點時,該項需要設(shè)置為非集群。 · 當源庫類型為MongDB集群4.0及以上版本,集群實例無法獲取到分片節(jié)點的IP時,可選擇集群(MongoDB 4.0+)。 |
|
源端分片個數(shù) |
當源端實例類型設(shè)置為“集群”時,需要填寫源端數(shù)據(jù)庫實例個數(shù)。 源端數(shù)據(jù)庫實例個數(shù)默認最小值為2,最大值為32,你需要根據(jù)源庫實際的集群分片個數(shù)設(shè)置該值大小。 |
|
標簽 |
可選配置,對遷移任務(wù)的標識。使用標簽可方便管理您的遷移任務(wù)。每個任務(wù)最多支持10個標簽配額。 |
d)在“源庫及目標庫”頁面,遷移實例創(chuàng)建成功后,填選源庫信息和目標庫信息,建議您單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協(xié)議,單擊“下一步”。
圖6 源庫信息頁面
|
參數(shù) |
描述 |
|---|---|
|
mongosIP地址或域名 |
源數(shù)據(jù)庫的IP地址或域名,格式為IP地址/域名:端口。其中源數(shù)據(jù)庫服務(wù)端口,可輸入范圍為1~65534間的整數(shù)。 該輸入框最多支持填寫3組源數(shù)據(jù)庫的IP地址或者域名信息,多個值需要使用英文逗號隔開。例如:192.168.0.1:8080,192.168.0.2:8080。同時需要確保所填寫的多個IP地址或域名屬于同一個分片集群。 說明:此處若填寫的是多組IP地址或者域名信息,在進行測試連接的過程中,只要存在一組IP地址或者域名可以連通,那么測試連接就提示成功。所以需要您保證填寫的IP地址或域名的正確性。 |
|
賬號認證數(shù)據(jù)庫 |
填寫的數(shù)據(jù)庫賬號所屬的數(shù)據(jù)庫名稱。例如:華為云DDS實例默認的賬號認證數(shù)據(jù)庫為admin。 |
|
mongos用戶名 |
訪問源數(shù)據(jù)庫MongoDB的用戶名。 |
|
mongos密碼 |
訪問源數(shù)據(jù)庫MongoDB的用戶名所對應(yīng)的密碼。 |
|
SSL安全連接 |
通過該功能,用戶可以選擇是否開啟對遷移鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 |
|
分片數(shù)據(jù)庫 |
根據(jù)源庫實際的集群分片個數(shù),填寫對應(yīng)的分片數(shù)據(jù)庫信息。 |
· 目標庫信息配置
圖7 目標庫信息
|
參數(shù) |
描述 |
|---|---|
|
數(shù)據(jù)庫實例名稱 |
默認為創(chuàng)建遷移任務(wù)時選擇的數(shù)據(jù)庫實例,不可進行修改。 |
|
數(shù)據(jù)庫用戶名 |
目標數(shù)據(jù)庫對應(yīng)的數(shù)據(jù)庫用戶名。 |
|
數(shù)據(jù)庫密碼 |
目標數(shù)據(jù)庫的登錄密碼。 |
e)在“遷移設(shè)置”頁面,設(shè)置遷移對象,單擊“下一步”。
圖8 設(shè)置遷移對象
f)在“預(yù)檢查”頁面,進行遷移任務(wù)預(yù)校驗,校驗是否可進行任務(wù)遷移。
· 查看檢查結(jié)果,如有不通過的檢查項,需要修復(fù)不通過項后,單擊“重新校驗”按鈕重新進行遷移任務(wù)預(yù)校驗。
預(yù)檢查不通過項處理建議請參見《數(shù)據(jù)復(fù)制服務(wù)用戶指南》中的“預(yù)檢查不通過項修復(fù)方法”。
· 預(yù)檢查完成后,且所有檢查項結(jié)果均通過時,單擊“下一步”。
圖9 預(yù)檢查
說明:所有檢查項結(jié)果均通過時,若存在待確認項,需要閱讀并確認詳情后才可以繼續(xù)執(zhí)行下一步操作。
g)在“任務(wù)確認”頁面,選擇遷移任務(wù)的啟動時間,勾選協(xié)議,單擊“啟動任務(wù)”,提交遷移任務(wù)。
說明:
· 遷移任務(wù)的啟動時間可以根據(jù)業(yè)務(wù)需求,設(shè)置為“立即啟動”或“稍后啟動”。
· 預(yù)計遷移任務(wù)啟動后,會對源數(shù)據(jù)庫和目標數(shù)據(jù)庫的性能產(chǎn)生影響,建議選擇業(yè)務(wù)低峰期,合理設(shè)置遷移任務(wù)的啟動時間。如果遷移不可避免業(yè)務(wù)高峰期,推薦使用遷移限速功能,即“流速模式”選擇“限速”。
h)遷移任務(wù)提交后,開始啟動遷移任務(wù),您可以返回“實時遷移管理”頁面,查看遷移任務(wù)狀態(tài)。
2、任務(wù)管理。
同步任務(wù)啟動后,會經(jīng)歷全量同步和增量同步兩個階段,對于不同階段的同步任務(wù),您可以進行任務(wù)管理。
· 全量同步
查看同步進度:全量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步進度”頁簽下,查看全量同步進度,您可以查看結(jié)構(gòu)、數(shù)據(jù)、索引同步的進度,也查看具體同步對象的同步進度。當全量同步進度顯示為100%,表示全量同步已經(jīng)完成。
· 增量同步
【查看時延監(jiān)控】全量同步完成后,開始進行增量同步。對于增量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步進度”頁簽下,查看增量同步同步時延,當時延為0s時,說明源數(shù)據(jù)庫和目標數(shù)據(jù)庫的數(shù)據(jù)是實時同步的。您也可以使用“同步對比”頁簽進行一致性對比。
圖10 查看時延監(jiān)控
【查看同步對比】為了盡可能減少業(yè)務(wù)的影響和業(yè)務(wù)中斷時間,增量同步中的任務(wù),您可單擊任務(wù)名稱,在“同步對比”頁簽下創(chuàng)建對比任務(wù)。
具體的同步對比操作及注意事項請參考《數(shù)據(jù)復(fù)制服務(wù)用戶指南》中“對比同步項”章節(jié)。
3、割接建議。
建議您選擇一個業(yè)務(wù)低峰期,開始正式系統(tǒng)割接流程。割接前,請您確認至少在業(yè)務(wù)低峰期有過一次完整的數(shù)據(jù)對比??梢越Y(jié)合數(shù)據(jù)對比的“稍后啟動”功能,選擇業(yè)務(wù)低峰期進行數(shù)據(jù)對比,以便得到更為具有參考性的對比結(jié)果。由于同步具有輕微的時差,在數(shù)據(jù)持續(xù)操作過程中進行對比任務(wù),可能會出現(xiàn)少量數(shù)據(jù)不一致對比結(jié)果,從而失去參考意義。
a)先中斷業(yè)務(wù)(如果業(yè)務(wù)負載非常輕,也可以嘗試不中斷業(yè)務(wù))。
b)在源數(shù)據(jù)庫端執(zhí)行如下語句,并觀察在1-5分鐘內(nèi)若無任何新會話執(zhí)行SQL ,則可認為業(yè)務(wù)已經(jīng)完全停止。
db.currentOp()
說明:上述語句查詢到的進程列表中,包括DRS遷移實例的連接,您需要確認除DRS遷移實例的連接外無任何新會話執(zhí)行SQL,即可認為業(yè)務(wù)已經(jīng)完全停止。
c)通過DRS遷移任務(wù)監(jiān)控頁面進行觀察同步時延,保持實時同步時延為0,并穩(wěn)定保持一段時間;同時,您可以使用數(shù)據(jù)級對比功能,進行割接前的最后一次數(shù)據(jù)級對比,耗時可參考之前的對比記錄。
· 如果時間允許,則選擇全部對比。
· 如果時間不允許,則推薦對比活躍表,關(guān)鍵業(yè)務(wù)表,第二步對比多次存在差異的表等。
d)確定系統(tǒng)割接時機,業(yè)務(wù)系統(tǒng)指向本云數(shù)據(jù)庫,業(yè)務(wù)對外恢復(fù)使用,遷移完成。
4、遷移結(jié)束。
a)結(jié)束遷移任務(wù):業(yè)務(wù)系統(tǒng)和數(shù)據(jù)庫切換至本云后,為了防止源數(shù)據(jù)庫的操作繼續(xù)同步到目標數(shù)據(jù)庫,造成數(shù)據(jù)覆蓋問題,此時您可選擇結(jié)束遷移任務(wù),該操作僅刪除了遷移實例,遷移任務(wù)仍顯示在任務(wù)列表中,您可以進行查看或刪除。結(jié)束遷移任務(wù)后,DRS將不再計費。
b)刪除遷移任務(wù):對于已結(jié)束的遷移任務(wù),您可選擇刪除任務(wù)。該操作將一并刪除遷移任務(wù),刪除遷移任務(wù)后,該任務(wù)將不會出現(xiàn)在任務(wù)列表中。