支持的源和目標數據庫
支持的源和目標數據庫,如下表:
| 源數據庫 | 目標數據庫 |
|---|---|
| DDS 3.4/4.0(副本集) 自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(副本集) |
DDS 3.4/4.0(副本集) 自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(副本集) |
說明
源庫為自建MongoDB數據庫時,支持的版本為3.4/4.0/4.2/4.4/5.0/6.0。
目標庫大版本號建議不低于源庫。
支持MongoDB/DDS單機版的全量數據遷移。
支持的遷移對象及SQL
遷移對象
- 當前DTS支持集合級(指定集合對象)、庫級(整庫遷移)遷移。
- 支持索引的結構遷移。
- 庫、集合支持做名稱映射。
- 不支持遷移admin和local庫中的數據。
- 數據遷移僅針對數據源中的用戶數據庫,而系統庫confilg、local、admin會被自動過濾。
增量遷移支持的SQL操作
- DML
INSERT、UPDATE、REPLACE、DELETE。 - DDL
結構遷移僅支持INDEX遷移,如果是整庫遷移,支持其下新增表的遷移;不支持增量遷移過程中的DDL操作。
數據庫賬號及權限
數據庫賬號及權限如下表:
數據庫 所需權限 參考賦權語句 源庫
全量:具備admin庫的readAnyDatabase權限、clusterMonitor權限。
增量:具備admin庫的readAnyDatabase權限、clusterMonitor權限,local庫的read權限。
或者具備超級用戶權限。
db.grantRolesToUser("用戶名",[{role:"readAnyDatabase",db:"admin"}, {role:"clusterMonitor",db:"admin"}])
db.grantRolesToUser("用戶名",[{role:"readAnyDatabase",db:"admin"}, {role:"clusterMonitor",db:"admin"}, {role:"read",db:"local"}])
目標庫
admin庫的dbAdminAnyDatabase權限、readWriteAnyDatabase權限、clusterMonitor權限。
或者具備超級用戶權限。
db.grantRolesToUser("用戶名",[{role:"dbAdminAnyDatabase",db:"admin"}, {role:"readWriteAnyDatabase",db:"admin"},{role:"clusterMonitor",db:"admin"}])
操作需知
- 源庫須開啟Oplog日志。
- 源端、目標端實例的運行狀態、復制狀態必須正常。
- 在遷移時,如果源庫、目標庫進行主備切換,將會導致任務異常。
- 選擇表級對象遷移時,增量遷移過程中不允許對表進行重命名操作。
- 如遷移對象為表級別,則單次遷移任務僅支持遷移最多1000張表。當超出數量限制,任務可能會報錯。如果遇到這種情形,建議您拆分待遷移的表,分批配置成多個任務,或者配置為整庫遷移。
- 暫不支持同步包含TTL(Time To Live)索引的集合。若待同步的數據庫中包含TTL索引,則可能會由于源庫和目標庫時區、時鐘等的不一致,導致數據不一致。
- 不保留事務信息,即源庫中的事務同步到目標庫時會轉變為單條的記錄。
- 在DTS遷移期間,不允許有除DTS外的數據寫入目標庫,否則會導致源庫與目標庫數據不一致。
- 目標庫若已存在行數據,DTS在增量遷移過程中源庫相同主鍵的數據將覆蓋目標庫已存在的數據,因此在遷移前需要用戶自行判斷數據是否需要清除,建議用戶在遷移前自行清空目標庫。
- 在磁盤空間允許的情況下,建議源數據庫Oplog保存大小或時間越大越好。否則DTS在增量遷移時可能因無法獲取Oplog而導致任務失敗。如果由于您所設置的Oplog日志保存策略低于DTS要求的時間進而導致的問題,不在DTS的SLA保障范圍內。
- 遷移過程中,不允許修改、刪除連接源和目標數據庫的用戶的用戶名、密碼、權限,或修改源和目標數據庫的端口號。
- 全量初始化會并發執行INSERT操作,導致目標數據庫的集合產生碎片,因此全量初始化完成后目標實例的集合空間比源實例的集合空間大。建議目標庫的存儲空間比源庫大10%以上。
- 建議源庫和目標庫的數據庫版本保持一致,或者從低版本同步到高版本以保障兼容性。如為高版本同步至低版本,可能存在數據庫兼容性問題。
- 執行數據遷移前需評估源庫和目標庫的性能,同時建議業務低峰期執行數據遷移,否則全量數據初始化時將占用源庫和目標庫一定的讀寫資源,可能會導致數據庫的負載上升。
操作步驟
1、購買DTS數據遷移實例。
在管理控制臺點擊“創建實例”進入訂購頁面,“實例類型”選擇“數據遷移”,“目標庫實例”的“數據庫類型”選擇DDS,選擇實例或輸入IP地址、端口,完成其他信息的填寫并完成購買。
說明文檔數據庫有副本集、分片集群等不同的架構,在網絡訪問方面與其他數據庫相比具有一定的差異性,遷移前請您詳細閱讀遷移數據到天翼云DDS數據庫的網絡準備章節內容,了解并做好網絡方面的準備工作。
2、進入實例配置頁面。
DTS實例購買成功后,進入【數據遷移】實例列表頁面,上一步驟購買成功的實例在實例列表中顯示狀態為“待配置”,進入實例配置頁面的操作分兩種情況:
- 當DTS實例的網絡接入類型為“公網EIP”時,請先點擊“綁定彈性IP”按鈕完成公網彈性IP的綁定,然后點擊該實例操作列的“實例配置”按鈕。
- 當DTS實例網絡接入類型為“VPC網絡”時,直接點擊該實例操作列的“實例配置”按鈕。
3、配置源庫及目標庫信息。
進入實例配置第一個步驟的【配置源庫及目標庫信息】頁面,填入源庫與目標庫的相關配置信息,包括源庫數據庫類型(選擇DDS/MongoDB)、架構類型(選擇副本集)、源庫IP地址端口/實例信息、鑒權庫名稱(默認為admin)、數據庫賬號、數據庫密碼等信息。
完成上述信息的填寫后,點擊源數據庫和目標數據庫的“測試連接”按鈕進行數據庫連接測試,檢查數據庫能否正常連接。
4、配置遷移對象及高級配置。
源庫和目標庫連通性測試成功后,點下一步按鈕,進入實例配置第二個步驟的【配置遷移對象及高級配置】頁面,在“源庫對象”中選擇要遷移的源庫對象,包含:DATABASE、COLLECTION,選中后點擊“>”按鈕,將待遷移對象移動到“已選擇對象”中。
說明關于配置遷移對象及高級配置頁面的詳細說明,請參考數據傳輸服務 - 用戶指南 - 數據遷移 - 實例管理 - 配置遷移實例文檔中配置遷移對象及高級配置詳細說明。
5、預檢查和啟動遷移。
完成遷移對象和高級配置后,點擊“下一步預檢查”,進入實例配置第三個步驟的【預檢查】頁面。預檢查會檢查如下列表信息,并給出檢查結果,用戶可以依據檢查結果進行下一步操作。
| 檢查項 | 檢查內容 |
|---|---|
| DDS/MongoDB版本檢查 | 檢查源庫和目標庫的DDS/MongoDB版本是不是符合要求。 |
| 源庫用戶權限檢查 | 檢查源庫用于DTS任務的用戶是否具有相應的權限。 |
| 源庫連通性檢查 | 檢查數據傳輸服務DTS能否連通源數據庫。 |
| 目標庫用戶權限檢查 | 檢查目標庫用于DTS任務的用戶是否具有相應的權限。 |
| 目標庫連通性檢查 | 檢查數據傳輸服務DTS能否連通目標數據庫。 |
| 目標庫磁盤空間檢查 | 檢查目標數據庫是否有足夠的磁盤空間。 |
| 目標庫實例狀態檢查 | 檢查目標數據庫實例的狀態是否正常。 |
| 源庫和目標庫固定集合一致性檢查 | 檢查目標數據庫是否已存在用戶選擇遷移的固定集合或同名的普通集合。 |
| 目標庫存在與源庫同名非空集合檢查 | 檢查目標數據庫是否存在與源庫同名的非空集合。 |
| 源庫映射后的庫名、集合名檢查 | 檢查映射后是否存在不符合規范的庫名、集合名。 |
| 源庫集合的索引個數檢查 | 檢查源數據庫是否存在索引數量大于10的集合。 |
| 源庫包含TTL的索引檢查 | 檢查源數據庫是否存在包含TTL索引的集合。 |
| 副本集名稱檢查 | 檢查填寫的源數據庫或目標數據庫的副本集名稱是否正確。 |
| Oplog開啟檢查 | 檢查源數據數據庫Oplog是否已開啟。 |
如果預檢查通過,可點擊【預檢查】頁面底部的“啟動遷移”按鈕,開始遷移任務。