1. 场景说明
在 MongoDB 运维中,数据备份与恢复是核心操作。本文使用 mongodump
和 mongorestore
工具,演示如何通过命令行导出和导入数据,解决副本集连接、路径指定等关键问题。
2. 数据导出(mongodump)
2.1 导出命令详解
bash
mongodump --uri="mongodb://root:Dsy%[email protected]: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 验证导出结果
bash
# 查看备份文件结构
ls /Volumes/work/mongo
- 正常输出应包含子目录(以数据库名命名)及
.bson
和.metadata.json
文件。
3. 数据导入(mongorestore)
3.1 导入命令详解
mongorestore --uri="mongodb://admin:Xdsdsu%[email protected]:217/admin" /Volumes/work/mongo
-
参数解析:
-
--uri
:目标数据库连接字符串 -
末尾路径 :必须指定备份文件根目录(即
mongodump --out
的路径),工具会自动识别子目录中的数据库。
-
4. 常见问题 FAQ
Q1:导入时提示 Failed: error connecting to DB server
-
检查目标 MongoDB 服务是否运行,防火墙是否放行端口(如
27017
)。 -
确认用户名、密码及转义符是否正确。
Q2:如何仅导入指定数据库或集合?
-
导入单个数据库:在路径后追加数据库目录名:
bashmongorestore --uri="..." /Volumes/work/mongo/<database_name>
-
导入单个集合 :添加
--nsInclude
参数:bashmongorestore --uri="..." --nsInclude=<database_name>.<collection_name> /Volumes/work/mongo
Q3:备份文件过大,如何压缩?
-
导出时添加
--gzip
:bashmongodump --uri="..." --gzip --out=/path/to/dump
-
导入时自动解压:
bashmongorestore --uri="..." --gzip /path/to/dump