1. 場景說明
在 MongoDB 運維中,數據備份與恢復是核心操作。本文使用?mongodump
?和?mongorestore
?工具,演示如何通過命令行導出和導入數據,解決副本集連接、路徑指定等關鍵問題。
2. 數據導出(mongodump)
2.1 導出命令詳解
mongodump --uri="mongodb://root:Dsy%40123@dds-uf66dd9c38f2a41756-pub.mongodb.rds.aliyuncs.com:3717,dds-uf66dg9c38f2a42679-pub.mongodb.rds.aliyuncs.com:3717/admin?maxPoolSize=20&minPoolSize=1&replicaSet=mgset-70730161" --out=/Volumes/work/mongo
-
參數解析:
-
--uri
:連接字符串 -
--out
:導出數據存儲路徑,默認生成?dump
?文件夾,此處指定為?/Volumes/work/mongo
。
-
2.2 驗證導出結果
# 查看備份文件結構
ls /Volumes/work/mongo
-
正常輸出應包含子目錄(以數據庫名命名)及?
.bson
?和?.metadata.json
?文件。
3. 數據導入(mongorestore)
3.1 導入命令詳解
mongorestore --uri="mongodb://admin:Xdsdsu%40123@143.223.43.130:217/admin" /Volumes/work/mongo
-
參數解析:
-
--uri
:目標數據庫連接字符串 -
末尾路徑:必須指定備份文件根目錄(即?
mongodump --out
?的路徑),工具會自動識別子目錄中的數據庫。
-
4. 常見問題 FAQ
Q1:導入時提示?Failed: error connecting to DB server
-
檢查目標 MongoDB 服務是否運行,防火墻是否放行端口(如?
27017
)。 -
確認用戶名、密碼及轉義符是否正確。
Q2:如何僅導入指定數據庫或集合?
-
導入單個數據庫:在路徑后追加數據庫目錄名:
mongorestore --uri="..." /Volumes/work/mongo/<database_name>
-
導入單個集合:添加?
--nsInclude
?參數:mongorestore --uri="..." --nsInclude=<database_name>.<collection_name> /Volumes/work/mongo
Q3:備份文件過大,如何壓縮?
-
導出時添加?
--gzip
:mongodump --uri="..." --gzip --out=/path/to/dump
-
導入時自動解壓:
mongorestore --uri="..." --gzip /path/to/dump