Debian下MongoDB数据恢复方法有哪些
小樊
50
2025-11-29 10:45:47
Debian下MongoDB数据恢复方法
一 逻辑恢复 mongorestore
- 适用场景:从 mongodump 生成的 BSON 备份恢复,支持库、集合、条件恢复与压缩备份。
- 安装工具(若未安装):sudo apt update && sudo apt install mongodb-clients。
- 基本步骤:
- 连接目标实例(必要时设置认证):mongorestore --host localhost --port 27017 /backup/mongodb/2025*
- 恢复指定库:mongorestore --host localhost --port 27017 -d mydb /backup/mongodb/2025*/mydb
- 恢复指定集合:mongorestore --host localhost --port 27017 -d mydb -c mycol /backup/mongodb/2025*/mydb/mycol.bson
- 从压缩备份恢复:mongorestore --host localhost --port 27017 --gzip /backup/mongodb/2025*
- 按条件导出再导入(示例):mongodump -d mydb -c mycol -q ‘{age:{$gt:30}}’ --out /tmp/dump && mongorestore -d mydb -c mycol /tmp/dump/mydb/mycol.bson
- 常用选项:–drop(恢复前删除同名列)、–upsert(存在则更新)、–db/–collection 精准定位。
二 导入导出工具恢复 mongoimport
- 适用场景:从 mongoexport 导出的 JSON/CSV 文件恢复,适合跨版本迁移、部分数据回填或结构简单的集合。
- 基本步骤:
- 恢复为集合:mongoimport --host localhost --port 27017 -d mydb -c mycol /path/file.json
- 导入 CSV(含列名):mongoimport --host localhost --port 27017 -d mydb -c mycol --type csv --headerline /path/file.csv
- 冲突处理:–upsert(按_id或唯一索引更新)、–drop(先删后导)。
三 文件系统级恢复 拷贝数据文件
- 适用场景:有 /var/lib/mongodb 的整库拷贝或快照,需要快速回滚到某一时间点。
- 基本步骤:
- 停止服务:sudo systemctl stop mongod
- 备份当前数据目录:sudo mv /var/lib/mongodb /var/lib/mongodb.bak_$(date +%F_%T)
- 恢复数据目录:sudo cp -a /backup/mongodb/data /var/lib/mongodb
- 修正权限(Debian常见用户组为 mongodb):sudo chown -R mongodb:mongodb /var/lib/mongodb
- 启动服务:sudo systemctl start mongod
- 注意:仅适用于相同 MongoDB 主版本 的实例;WiredTiger 存储引擎下确保 WiredTiger.lock 等锁文件被移除;恢复后建议执行 db.repairDatabase()(副本集/分片谨慎)。
四 恢复流程与注意事项
- 权限与认证:使用 --username/–password 并指定 --authenticationDatabase admin;确保备份与恢复账户具备相应角色(如 backup/restore)。
- 一致性建议:单机恢复前可 stop mongod;副本集/分片环境优先使用逻辑恢复并在维护窗口操作,避免业务写入冲突。
- 版本与兼容性:尽量在相同 MongoDB 主版本 间恢复;跨大版本或存储引擎变更时优先使用 mongodump/mongorestore。
- 空间与性能:大库恢复前确保 磁盘空间 充足;必要时使用 --gzip 减少 I/O 与网络占用。
- 验证:恢复后用客户端连接检查集合计数、索引与关键业务数据一致性。