支持的源和目標數據庫
表支持的數據庫
| 源數據庫 | 目標數據庫 |
|---|---|
| 本地自建Mongo數據庫 ECS自建Mongo數據庫 其他云上Mongo數據庫 DDS實例 |
DDS實例 |
前提條件
- 已登錄數據復制服務控制臺。
- 滿足實時同步支持的數據庫類型和版本,詳情請參見實時同步。
使用建議
-
數據庫同步與環境多樣性和人為操作均有密切關系,為了確保同步的平順,建議您在進行正式的數據同步之前進行一次演練,可以幫助您提前發現問題并解決問題。
-
同步階段,確保目標數據庫無業務寫入,保證同步前后數據一致。
-
基于以下原因,建議您在啟動任務時選擇“稍后啟動”功能,將啟動時間設置在業務低峰期,相對靜止的數據可以有效提升一次性同步成功率,避免同步對業務造成性能影響。
- 在網絡無瓶頸的情況下,全量同步會對源數據庫增加約20MB/s的查詢壓力,以及占用2~4個CPU。
- DRS并發讀取數據庫,會占用大約6-10個session連接數,需要考慮該連接數對業務的影響。
-
數據對比
建議您結合數據對比的“稍后啟動”功能,選擇業務低峰期進行數據對比,以便得到更為具有參考性的對比結果。由于同步具有輕微的時差,在數據持續操作過程中進行對比任務,可能會出現少量數據不一致對比結果,從而失去參考意義。
使用須知
在創建同步任務前,請務必閱讀以下使用須知。

說明
建議創建單獨用于DRS任務連接的數據庫帳號,避免因為數據庫帳號密碼修改,導致的任務連接失敗。
連接源或目標數據庫的帳號密碼修改后,請盡快修改連接信息,避免任務連接失敗后自動重試,導致數據庫帳號被鎖定影響使用。
表使用須知
類型名稱
使用和操作限制
數據庫權限設置
源數據庫最小權限要求:
l?全量+增量同步權限要求:
??副本集:連接源數據庫的用戶需要有admin庫的readAnyDatabase權限,有local庫的read權限。
目標數據庫最小權限要求:連接目標數據庫的用戶需要有admin庫的dbAdminAnyDatabase權限,有目標數據庫的readWrite權限。
同步對象約束
l?副本集:目前只支持集合(包括驗證器,是否是固定集合),索引和視圖的同步。
l?不支持同步系統庫(如local、admin、config等)和系統集合,如果業務數據在系統庫下,則需要先將業務數據移動到用戶數據庫下,可以使用renameCollection命令進行移出。
l?不支持視圖的創建語句中有正則表達式。
l?不支持_id字段沒有索引的集合。
l?不支持BinData()的第一個參數為2。
l?同步對象映射名稱長度在1到63個字符之間,不支持以下字符:/ \ . " $<>。
源數據庫要求
l?增量同步時,源數據庫的Oplog日志必須打開。
l?在磁盤空間允許的情況下,建議源數據庫Oplog保存時間越長越好,建議為3天。
l?不支持源數據庫的庫名包含/\."$和空格, 集合名或視圖名中不能包含$或以system.開頭。
l?源數據庫不能是GaussDB(for Mongo)實例。
目標數據庫要求
l?目標數據庫實例的運行狀態必須正常。
l?目標數據庫實例必須有足夠的磁盤空間。
l?目前不支持從高版本數據庫到低版本數據庫的同步。
操作須知
l?相互關聯的數據對象要確保同時同步,避免同步因關聯對象缺失,導致同步失敗。常見的關聯關系:視圖引用集合、視圖引用視圖等。
l?副本集:MongoDB數據庫的副本集實例狀態必須正常,要存在主節點。
l?源數據庫為副本集實例時,增量同步階段支持如下操作:
??支持文檔(document)新增、刪除、更新。
??支持集合(collection)新建、刪除。
??支持索引(index)新建、刪除。
??支持視圖(view)新建,刪除。
??支持convertToCapped、collMod、renameCollection命令。
l?對于在源數據庫已經存在TTL索引的集合,或者在增量同步期間在源庫數據創建了TTL索引的集合,由于源數據庫和目標庫數據庫時區,時鐘的不一致,不能保證同步完成之后數據的一致性。
l?壓縮參數block_compressor的取值,根據源庫對應集合的stats().wiredTiger.creationString.block_compressor來決定,如果目標庫已經存在對應的空集合,則不同步壓縮參數;特殊的,對于不支持的壓縮參數,按照目標庫實例的net.compression.compressors參數決定。當目標庫為DDS 4.2版本時,由于目標庫不支持壓縮參數的設置,DRS不同步壓縮參數。
l?如果源數據庫的MongoDB服務不是單獨部署的,而是和其他的服務部署在同一臺機器,則必須要給源數據庫的wiredTiger引擎加上cacheSizeGB的參數配置,建議值設為最小空閑內存的一半。
l?選擇集合同步時,增量同步過程中不建議對集合進行重命名操作。
l?建議填寫副本集所有的主節點和備節點信息,以防主備切換影響同步任務。如果填寫的是主備多個節點的信息,注意所有的節點信息必須屬于同一個副本集實例。
l?為了保持數據一致性,在整個同步過程中,不允許對正在同步中的目標數據庫進行修改操作(包括但不限于DDL、DML操作)。
l?同步過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
l?在任務啟動、任務全量同步階段,不建議對源數據庫做刪除類型的DDL操作,比如刪除數據庫、集合、索引、文檔、視圖等,這樣可能會引起任務同步失敗。
l?在整個同步過程中,不支持源數據庫主備切換導致數據回滾的情況。
l?不支持全量同步和增量同步階段insert、update源庫大于16MB的文檔。
l?任務增量階段,為保證同步的性能,會集合級的進行并發回放。特殊地,以下情況只支持單線程寫入,不支持并發回放:
??集合的索引中有unique key時;
??集合屬性的capped為true時;
這種情況可能會導致任務時延增高。
l?為了提高同步的速度,在開始同步之前,建議在源數據庫刪掉不需要的索引,只保留必須的索引。在同步過程中不建議對源庫創建索引,如果必須要創建索引,請使用后臺的方式創建索引。
l?為了防止回環,不支持在相同的源和目標庫同時啟動入云和出云任務。
說明
同步任務支持源和目標為同一個數據庫,為了避免回環,必須使用對象名映射功能進行重命名。
操作步驟
本章節將以DDS副本集為示例,介紹在VPC網絡場景下,通過數據復制服務配置DDS副本集同步任務的流程。
步驟 1 在“實時同步管理”頁面,單擊“創建同步任務”。
步驟 2 在“同步實例”頁面,填選任務名稱、描述、同步實例信息,單擊“開始創建”。
- 任務信息
表 任務和描述
| 參數 | 描述 |
|---|---|
| 任務名稱 | 任務名稱在4到50位之間,必須以字母開頭,可以包含字母、數字、中劃線或下劃線,不能包含其他的特殊字符。 |
| 描述 | 描述不能超過256位,且不能包含! = < > & ' " \ 特殊字符。 |
- 同步實例信息
表 同步實例信息
| 參數 | 描述 |
|---|---|
| 數據流動方向 | 選擇入云。入云指目標端數據庫為本云數據庫。 |
| 源數據庫引擎 | 選擇“MongoDB”。 |
| 目標數據庫引擎 | 選擇“DDS”。 |
| 網絡類型 | 此處以“公網網絡”為示例,默認為公網網絡類型,可按照需求選擇VPC網絡、VPN網絡、專線網絡、公網網絡。 |
| 目標數據庫實例 | 用戶所創建的目標數據庫實例。 |
| 同步實例所在子網 | 請選擇同步實例所在的子網。也可以單擊“查看子網”,跳轉至“網絡控制臺”查看實例所在子網幫助選擇。默認值為當前所選數據庫實例所在子網,請選擇有可用IP地址的子網。為確保同步實例創建成功,僅顯示已經開啟DHCP的子網。 |
| IP類型 | 選擇遷移實例的IP類型,目前支持選擇“IPv4”或“IPv4&IPv6雙棧”。只有所選擇的VPC及子網都開啟了IPv6雙棧功能,才能選擇IP類型為“IPv4&IPv6雙棧”。 |
| 同步模式 | 全量+增量:該模式為數據庫持續性同步,適用于對業務中斷敏感的場景,通過全量同步過程完成目標端數據庫的初始化后,增量同步階段通過解析日志等技術,將源端和目標端數據庫保持數據持續一致。 說明 選擇“全量+增量”同步模式,增量同步可以在全量同步完成的基礎上實現數據的持續同步,無需中斷業務,實現同步過程中源業務和數據庫繼續對外提供訪問。 |
| 源數據庫實例類型 | 同步模式為“全量+增量”時,需要根據源數據庫的具體來源進行設置,目前源庫僅支持副本集,該項為非集群。 |
說明對于創建失敗的任務,DRS默認保留3天,超過3天將會自動結束任務。
步驟 3 在“源庫及目標庫”頁面,同步實例創建成功后,填選源庫信息和目標庫信息,單擊“源庫和目標庫”處的“測試連接”,分別測試并確定與源庫和目標庫連通后,勾選協議,單擊“下一步”。
- 源庫信息
表 源庫信息
| 參數 | 描述 |
|---|---|
| 數據庫類型 | 源數據庫類型可以為“ECS自建庫”或“DDS實例”,本示例選擇“DDS實例”。 |
| VPC | 源數據庫類型選擇“ECS自建庫”可見,指源數據庫實例所在的虛擬專用網絡,可以對不同業務進行網絡隔離。 |
| 子網 | 源數據庫類型選擇“ECS自建庫”可見,通過子網提供與其他網絡隔離的、可以獨享的網絡資源,以提高網絡安全。子網在可用分區內才會有效,創建源數據庫實例的子網需要開啟DHCP功能,在創建過程中也不能關閉已選子網的DHCP功能。 |
| IP地址或域名 | 源數據庫類型選擇“ECS自建庫”可見,源數據庫的IP地址或域名。 |
| 數據庫實例名稱 | 源數據庫類型選擇“DDS實例”可見,選擇作為源數據庫的DDS實例。 |
| 帳號認證數據庫 | 填寫的數據庫帳號所屬的數據庫名稱。例如:DDS實例默認的帳號認證數據庫為admin。 |
| 數據庫用戶名 | 源數據庫的用戶名。 |
| 數據庫密碼 | 源數據庫的用戶名所對應的密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對同步鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 最大支持上傳500KB的證書文件。 如果不啟用SSL安全連接,請自行承擔數據安全風險。 |
說明
源數據庫的IP地址或域名、數據庫用戶名和密碼,會被系統加密暫存,直至刪除該同步任務后自動清除。
- 目標庫信息配置
表 目標庫信息
| 參數 | 描述 |
|---|---|
| 數據庫實例名稱 | 默認為創建同步任務時選擇的數據庫實例,不可進行修改。 |
| 帳號認證數據庫 | 填寫的數據庫帳號所屬的數據庫名稱。例如:DDS實例默認的帳號認證數據庫為admin。 |
| 數據庫用戶名 | 目標數據庫對應的數據庫用戶名。 |
| 數據庫密碼 | 目標數據庫的登錄密碼。 |
| SSL安全連接 | 通過該功能,用戶可以選擇是否開啟對同步鏈路的加密。如果開啟該功能,需要用戶上傳SSL CA根證書。 說明 最大支持上傳500KB的證書文件。 如果不啟用SSL安全連接,請自行承擔數據安全風險。 |
說明
目標數據庫的用戶名和密碼將在同步過程中被加密暫存到數據庫和同步實例主機上,待該任務刪除后會永久清除。
步驟 4 在“同步設置”頁面,設置同步對象,單擊“下一步”。
表同步對象
參數
描述
流速模式
流速模式支持限速和不限速,默認為不限速。
l?限速
自定義的最大同步速度,全量同步過程中的同步速度將不會超過該速度。
當流速模式選擇了“限速”時,你需要通過流速設置來定時控制同步速度。流速設置通常包括限速時間段和流速大小的設置。默認的限速時間段為“全天限流”,您也可以根據業務需求選擇“時段限流”。自定義的時段限流支持最多設置3個定時任務,每個定時任務之間不能存在交叉的時間段,未設定在限速時間段的時間默認為不限速。
流速的大小需要根據業務場景來設置,不能超過9999MB/s。
l?不限速
對同步速度不進行限制,通常會最大化使用源數據庫的出口帶寬。該流速模式同時會對源數據庫造成讀消耗,消耗取決于源數據庫的出口帶寬。比如源數據庫的出口帶寬為100MB/s,假設高速模式使用了80%帶寬,則同步對源數據庫將造成80MB/s的讀操作IO消耗。
說明
l?限速模式只對全量階段生效,增量階段不生效。
l?您也可以在創建任務后修改流速模式。具體方法請參見修改流速模式。
同步對象
左側框是源數據庫對象,右側框是已經選擇的對象,同步對象支持表級同步、庫級同步,您可以根據業務場景選擇對應的數據進行同步。
在同步對象右側已選對象框中,可以使用對象名映射功能進行源數據庫和目標數據庫中的同步對象映射,具體操作可參考4.6.5.2 對象名映射。映射后名稱長度在1到63個字符之間,不支持以下字符:/ \ . " $<>。
如果有切換源數據庫的操作或源庫同步對象變化的情況,請務必在選擇同步對象前單擊右上角的
,以確保待選擇的對象為最新源數據庫對象。
說明
l?選擇對象的時候支持對展開的庫進行搜索,以便您快速選擇需要的數據庫對象。
l?如果有切換源數據庫的操作或源庫同步對象變化的情況,請在選擇同步對象前單擊右上角的
,以確保待選擇的對象為最新源數據庫對象。
l?當對象名稱包含空格時,名稱前后的空格不顯示,中間如有多個空格只顯示一個空格。
l?選擇的同步對象名稱中不能包含空格。
步驟 5 在“預檢查”頁面,進行同步任務預校驗,校驗是否可進行同步。
- 查看檢查結果,如有不通過的檢查項,需要修復不通過項后,單擊“重新校驗”按鈕重新進行任務預校驗。
- 預檢查完成后,且預檢查通過率為100%時,單擊“下一步”。

說明所有檢查項結果均通過時,若存在請確認項,需要閱讀并確認詳情后才可以繼續執行下一步操作。
步驟 6 在“任務確認”頁面,設置同步任務的啟動時間,并確認同步任務信息無誤后,單擊“啟動任務”,提交同步任務。
表任務啟動設置
| 參數 | 描述 |
|---|---|
| 啟動時間 | 同步任務的啟動時間可以根據業務需求,設置為“立即啟動”或“稍后啟動”。 說明 預計同步任務啟動后,會對源數據庫和目標數據庫的性能產生影響,建議選擇業務低峰期,合理設置同步任務的啟動時間。 |
步驟 7 同步任務提交后,您可在“管理”頁面,查看并管理自己的任務。
- 您可查看任務提交后的狀態,狀態請參見任務狀態說明。
- 在任務列表的右上角,單擊
刷新列表,可查看到最新的任務狀態。 - 對于未啟動、狀態為配置中的任務,DRS默認保留3天,超過3天DRS會自動刪除后臺資源,當前任務狀態不變。當用戶再次配置時,DRS會重新申請資源。