本文介紹如何使用數據傳輸服務DTS(Data Transmission Service),實現全量數據遷移和增量數據遷移MongoDB副本集實例至其他地域,全量數據遷移MongoDB單節點實例至其他地域。
前提條件
源實例類型為單節點實例、副本集實例或分片集群實例。
說明使用DTS遷移單節點實例時,不支持增量數據遷移,詳情請參見遷移類型說明。
已經為源實例申請了公網連接地址,申請方法請參見(可選)申請公網連接地址。
已在目標地域中創建了目標實例,詳情請參見創建實例。
說明建議目標實例的存儲空間比源實例的已使用存儲空間大10%。
背景信息
在某些業務場景下,可能需要更換MongoDB實例的地域,例如:
業務結構調整。
在ECS實例上部署了相關應用程序,需要使用MongoDB實例提供數據庫服務,但是ECS實例與MongoDB實例不在同一地域。
本文以MongoDB實例從華北1(青島)遷移至華東1(杭州)為例,介紹具體的操作流程。
該操作僅遷移源實例的數據,源實例在遷移完成后如不再需要可執行釋放操作。
注意事項
DTS在執行全量數據遷移時將占用源庫和目標庫一定的資源,可能會導致數據庫服務器負載上升。如果數據庫業務量較大或服務器規格較低,可能會加重數據庫壓力,甚至導致數據庫服務不可用。建議您在執行數據遷移前謹慎評估,在業務低峰期執行數據遷移。
單節點實例不支持使用DTS執行增量數據遷移,為保障數據一致性,全量數據遷移期間請勿在源實例中寫入新的數據。
MongoDB實例支持的版本與存儲引擎請參見版本及存儲引擎,如需跨版本或跨引擎遷移,請提前確認兼容性。
MongoDB為保證提供更出色的性能和穩定性,新建的MongoDB實例為最新的數據庫小版本。
由于DTS寫入數據的邏輯為并發寫入,所以會導致目標端占用的存儲空間比源端大5%~10%。
請確保目標端MongoDB沒有與源端相同的主鍵(默認為_id),否則會導致數據丟失。若目標端有與源端相同的主鍵,請在不影響業務的前提條件下清空目標端的相關數據(刪掉目標端中與源端相同_id的文檔)。
費用說明
遷移類型 | 鏈路配置費用 | 公網流量費用 |
全量數據遷移 | 不收費。 | 僅當通過公網將數據遷移出阿里云時收費,詳情請參見DTS產品定價。 |
增量數據遷移 | 收費,詳情請參見DTS產品定價。 |
遷移類型說明
遷移類型 | 說明 |
全量數據遷移 | 將源MongoDB數據庫遷移對象的存量數據全部遷移到目標MongoDB數據庫中。 說明 支持遷移database、collection和index。 |
增量數據遷移 | 在全量遷移的基礎上,將源MongoDB數據庫的增量更新數據同步到目標MongoDB數據庫中。 說明
|
數據庫賬號的權限要求
遷移數據源 | 全量數據遷移 | 增量數據遷移 |
源MongoDB實例 | 待遷移庫的read權限 | 待遷移庫、admin庫和local庫的read權限 |
目標MongoDB實例 | 目標庫的readWrite權限 | 目標庫的readWrite權限 |
數據庫賬號創建及授權方法請參見使用DMS管理MongoDB數據庫用戶。
操作步驟
完成遷移后,將業務切換至目標MongoDB實例。
后續操作
根據業務需求確認是否需要釋放源實例。