适用场景:常规备份恢复、跨服务器迁移、部分数据恢复(如单个集合)。
恢复前准备:
sudo systemctl stop mongod 或 sudo service mongod stopnet stop MongoDB/data/db(Linux/macOS)或C:\data\db(Windows)目录复制到安全位置。具体步骤:
执行恢复命令:
使用mongorestore工具恢复备份数据,基本语法如下:
mongorestore --host <服务器地址> --port <端口> --username <用户名> --password <密码> --authenticationDatabase <认证库> --db <目标数据库名> <备份目录路径>
示例(恢复本地mydatabase数据库,备份目录为/backups/mongodb/mydatabase):
mongorestore --host localhost --port 27017 --username admin --password secret --authenticationDatabase admin --db mydatabase /backups/mongodb/mydatabase
--drop:恢复前先删除目标数据库中的现有数据(避免重复);--directoryperdb:若备份时使用了--directoryperdb选项(备份目录下每个数据库单独一个子目录),需添加此参数。验证恢复结果:
启动MongoDB服务(Linux/macOS:sudo systemctl start mongod;Windows:通过“服务”应用启动),登录mongo shell,执行以下命令检查数据:
use mydatabase;
show collections;
db.collection_name.find().limit(5); // 替换为实际集合名,查看前5条数据
适用场景:误删除数据、数据库崩溃后需要恢复到某一时间点的状态(需开启Oplog)。
恢复前准备:
mongodump --oplog选项)。具体步骤:
mongorestore恢复备份的全量数据(无需--oplogReplay):mongorestore --host localhost --port 27017 --db mydatabase /backups/mongodb/mydatabase
--oplogReplay选项重放备份中的Oplog,恢复备份后到某一时间点的操作:mongorestore --host localhost --port 27017 --oplogReplay /backups/mongodb
示例(恢复到2025-11-01 12:00:00的时间点):mongorestore --host localhost --port 27017 --oplogReplay --oplogLimit "2025-11-01T12:00:00" /backups/mongodb
适用场景:MongoDB数据目录损坏、无法启动服务(需确保备份文件一致性)。
具体步骤:
/data/db(或自定义数据目录)目录复制到MongoDB的数据目录,覆盖现有文件。sudo chown -R mongodb:mongodb /data/db
适用场景:误删除集合、物理文件损坏、官方工具无法恢复的情况。
常用工具:
db.plugin.undelete(["集合名"]);mongod --repair命令);mongodump或MongoDB Ops Manager自动化备份;mongodb用户);