支持的源和目標數據庫
表 支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| DDS實例 | 本地自建Mongo數據庫 ECS自建Mongo數據庫 其他云上Mongo數據庫 |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時遷移支持的數據庫類型和版本,詳情請參見實時遷移。
使用建議
-
數據庫遷移與環境多樣性和人為操作均有密切關系,為了確保遷移的平順,建議您在進行正式的數據庫遷移之前進行一次演練,可以幫助您提前發現問題并解決問題。
-
全量階段,確保源和目標數據庫無業務寫入,保證遷移前后數據一致。
-
基于以下原因,建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性遷移成功率,避免遷移對業務造成性能影響。
? 在網絡無瓶頸的情況下,全量遷移會對源數據庫增加約50MB/s的查詢壓力,以及占用2~4個CPU。
- 遷移無主鍵表時,為了確保數據一致性,會存在3s以內的單表級鎖定。
- 正在遷移的數據被其他事務長時間鎖死,可能導致讀數據超時。
- DRS并發讀取數據庫,會占用大約6-10個session連接數,需要考慮該連接數對業務的影響。
- 全量階段讀取表數據時,特別是大表的讀取,可能會阻塞業務上對大表的獨占鎖操作。
-
數據對比
建議您結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
使用須知
在創建遷移任務前,請務必閱讀以下使用須知。
表 使用須知
類型名稱 使用和操作限制 數據庫權限設置 源數據庫最小權限要求:
全量遷移權限要求:
副本集:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限。
單節點:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限。
集群:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限,有config庫的read權限。
全量+增量遷移權限要求:
副本集:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限,有local數據庫的read權限。
單節點:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限,有local數據庫的read權限。
目標數據庫最小權限要求:連接目標數據庫的用戶需要有admin庫的dbAdminAnyDatabase權限,有目標數據庫的readWrite權限。對于目標數據庫是集群的實例,遷移賬號還要有admin庫的clusterManager權限和config庫的read權限。
操作須知
不支持高版本到低版本的遷移。
不支持系統庫的遷移,用戶名和角色需要在目標庫手動創建。
對于在源數據庫已經存在TTL索引的集合,或者在增量遷移期間在源庫數據創建了TTL索引的集合,由于源數據庫和目標庫數據庫時區,時鐘的不一致,不能保證遷移完成之后數據的一致性。
壓縮參數block_compressor的取值,根據源庫對應集合的stats().wiredTiger.creationString.block_compressor來決定,如果目標庫已經存在對應的空集合,則不遷移壓縮參數;特殊的,對于不支持的壓縮參數,按照目標庫實例的net.compression.compressors參數決定。當目標庫的存儲引擎不是wiredTiger時,DRS不遷移壓縮參數。
不支持_id字段沒有索引的集合。
不支持BinData()的第一個參數為2。
?不支持視圖的創建語句中有正則表達式。
出云遷移的目標數據庫如果是副本集,則建議目標數據庫填寫所有的主節點和備節點信息,以防主備切換影響遷移任務。如果是填寫主備節點,注意填寫的節點信息必須屬于同一個副本集實例。
出云遷移的目標數據庫如果是集群,則建議填寫多個mongos信息,以防單個mongos節點故障影響遷移任務,并且多個mongos信息還可以實現負載均衡。如果填寫多個mongos信息,注意所有所填的信息必須屬于同一個集群實例。
?為了提高遷移的速度,在開始遷移之前,建議在源數據庫刪掉不需要的索引,只保留必須的索引。
?遷移過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
?在整個遷移過程中,為了保持數據一致性,不允許對正在遷移中的目標數據庫進行修改操作(包括但不限于DDL、DML操作)。
?在整個遷移過程中,不支持源數據庫主備切換導致數據回滾的情況。
不支持全量遷移和增量遷移階段insert、update源庫大于16MB的文檔。
任務增量階段,為保證遷移的性能,會集合級的進行并發回放。特殊地,以下情況只支持單線程寫入,不支持并發回放:
?集合的索引中有unique key時;
?集合屬性的capped為true時;
這種情況可能會導致任務時延增高。為了防止回環,不支持在相同的源和目標庫同時啟動入云和出云任務。
操作步驟
本章節將以公網網絡方式為示例,介紹DDS實例遷移至用戶端MongoDB數據庫的任務配置流程,其他網絡方式的配置流程類似。
步驟 1 在“實時遷移管理”頁面,單擊“創建遷移任務”,進入創建遷移任務頁面。
步驟 2 在“遷移實例”頁面,填選任務名稱、描述、遷移實例信息,單擊“下一步”。
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4-50位之間,必須以字母開頭,不區分大小寫,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
表 遷移實例信息
參數 描述 數據流動方向 選擇出云。
出云指源端數據庫為本云RDS或者DDS的場景,數據復制服務要求源數據庫或者目標數據庫中至少有一方為本云RDS或者DDS。源數據庫引擎 選擇DDS。 目標數據庫引擎 選擇MongoDB。 網絡類型 目前支持公網網絡、VPC網絡和VPN、專線網絡類型,您可以根據具體的業務場景進行設置,此處場景以公網網絡為示例。
VPC網絡:適合云上數據庫之間的遷移。
VPN、專線網絡:適合通過VPN、專線網絡,實現其他云下自建數據庫與云上數據庫遷移、或云上跨Region的數據庫之間的遷移。
公網網絡:適合將其他云下或其他平臺的數據庫遷移到目標數據庫。
源數據庫實例 用戶需要遷移的DDS實例。 遷移實例所在子網 選擇遷移實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。
默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保遷移實例創建成功,僅顯示已經開啟DHCP的子網。IP類型 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 遷移模式
全量:該模式為數據庫一次性遷移,適用于可中斷業務的數據庫遷移場景,全量遷移將非系統數據庫的全部數據庫對象和數據一次性遷移至目標端數據庫,包括:集合、索引等。
說明如果用戶只進行全量遷移時,建議停止對源數據庫的操作,否則遷移過程中源數據庫產生的新數據不會同步到目標數據庫。
全量+增量:該模式為數據庫持續性遷移,適用于對業務中斷敏感的場景,通過全量遷移過程中完成的目標端數據庫的初始化后,增量遷移階段通過解析日志等技術,將源端和目標端數據庫保持數據持續一致。
說明選擇“全量+增量”遷移模式,增量遷移可以在全量遷移完成的基礎上實現數據的持續同步,無需中斷業務,實現遷移過程中源業務和數據庫繼續對外提供訪問。標簽
可選配置,對遷移任務的標識。使用標簽可方便管理您的遷移任務。每個任務最多支持10個標簽配額。
任務創建成功后,您可以單擊任務名稱,在“標簽”頁簽下查看對應標簽。關于標簽的詳細操作,請參見 標簽管理。
步驟 3 在“源庫及目標庫”頁面,遷移實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
表 源庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建遷移任務時選擇的數據庫實例,不可進行修改。 |
| 數據庫用戶名 | 源數據庫對應的數據庫用戶名。 |
| 數據庫密碼 | 源數據庫對應的數據庫用戶名密碼。 |
說明源數據庫的用戶名和密碼將在遷移過程中被加密暫存到數據庫和遷移實例主機上,待該任務刪除后會永久清除。
表 目標庫信息
參數 描述 IP地址或域名 源數據庫的IP地址或域名,格式為IP地址/域名:端口。其中源數據庫服務端口,可輸入范圍為1~65534間的整數。
該輸入框最多支持填寫3組源數據庫的IP地址或者域名信息,多個值需要使用英文逗號隔開。例如:192.168.0.1:8080,192.168.0.2:8080。同時需要確保所填寫的多個IP地址或域名屬于同一個實例。
說明
此處若填寫的是多組IP地址或者域名信息,在進行測試連接的過程中,只要存在一組IP地址或者域名可以連通,那么測試連接就提示成功。所以需要您保證填寫的IP地址或域名的正確性。賬號認證數據庫 填寫的數據庫賬號所屬的數據庫名稱。例如:DDS實例默認的賬號認證數據庫為admin。 數據庫用戶名 目標數據庫的用戶名。 數據庫密碼 目標數據庫的用戶名所對應的密碼。 SSL安全連接 通過該功能,用戶可以選擇是否開啟對遷移鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明??? 最大支持上傳500KB的證書文件。
??? 如果不使用SSL證書,請自行承擔數據安全風險。
說明目標數據庫的IP地址或域名、數據庫用戶名和密碼,會被系統加密暫存,直至刪除該遷移任務后自動清除。
步驟 4 在“遷移設置”頁面,設置遷移對象,單擊“下一步”。
表 遷移對象
參數 描述 其他遷移選項 根據業務需求,選擇全量遷移是否遷移用戶自行創建的索引,基于_id的默認索引目標端會自動創建。如果不遷移索引,索引不參與對比。 遷移對象 您可以根據業務需求,選擇全部對象遷移、表級遷移或者庫級遷移。 如果有切換源數據庫的操作或源庫遷移對象變化的情況,請務必在選擇遷移對象前單擊右上角的
全部遷移:將源數據庫中的所有對象全部遷移至目標數據庫,對象遷移到目標數據庫實例后,對象名將會保持與源數據庫實例對象名一致且無法修改。
表級遷移:將選擇的表級對象遷移至目標數據庫。
庫級遷移:將選擇的庫級對象遷移至目標數據庫。
,以確保待選擇的對象為最新源數據庫對象。
說明
選擇對象的時候,對象名稱的前后空格不顯示,中間如有多個空格只顯示一個空格。
選擇對象的時候支持搜索,以便您快速選擇需要的數據庫對象。
步驟 5 在“預檢查”頁面,進行遷移任務預校驗,校驗是否可進行遷移。
-
查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行遷移任務預校驗。
預檢查不通過項處理建議請參見7.1 預檢查不通過項修復方法。
-
預檢查完成后,且預檢查通過率為100%時,單擊“下一步”。
所有檢查項結果均成功通過時,若存在告警請確認項,需要閱讀并確認告警詳情后才可以繼續執行下一步操作。
步驟 6 在“任務確認”頁面,設置遷移任務的啟動時間,并確認遷移任務信息無誤后,單擊“啟動任務”,提交遷移任務。
表 任務啟動設置
步驟 7 遷移任務提交后,您可在“實時遷移管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。
參數 描述 啟動時間 遷移任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”,優選“稍后啟動”。 說明預計遷移任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議您將任務啟動時間設定在業務低峰期,同時預留2-3天校對數據。