在恢复数据前,需完成以下基础操作:
sudo systemctl stop mongod
/var/lib/mongodb或/data/db)复制到安全位置:sudo cp -R /var/lib/mongodb /var/lib/mongodb_backup
.tar.gz),需提前解压;若为mongodump生成的BSON/JSON文件,确保路径正确。mongorestore是MongoDB官方提供的逻辑恢复工具,适用于mongodump生成的备份或手动导出的BSON/JSON文件。
若备份目录包含完整数据库(如/backups/mydb),可使用以下命令恢复到指定数据库(如mydb):
mongorestore --host localhost --port 27017 --db mydb /backups/mydb
--host/--port:指定MongoDB服务器地址和端口(默认localhost:27017);--db:目标数据库名(需与备份时的数据库名一致)。若只需恢复某个集合(如mycollection),可指定集合路径:
mongorestore --host localhost --port 27017 --db mydb --collection mycollection /backups/mydb/mycollection.bson
--collection:目标集合名(需与备份时的集合名一致)。若MongoDB启用了身份验证,需添加用户名、密码及认证数据库:
mongorestore --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin /backups/mydb
--username/--password:认证用户名和密码;--authenticationDatabase:认证数据库(通常为admin)。若备份时启用了Oplog(MongoDB的操作日志),可通过回放Oplog将数据恢复到故障前的精确时间点。
--oplog参数(如mongodump --oplog);/var/lib/mongodb/local/oplog.rs)。mongorestore --host localhost --port 27017 --oplogReplay /backups/mydb
--oplogReplay:指示mongorestore回放Oplog中的操作,实现增量恢复。若使用xtrabackup或mongod的--archive参数创建了物理备份(如.tar.gz或.xbstream格式),需通过以下步骤恢复:
sudo yum install -y percona-xtrabackup-24 # CentOS/RHEL
sudo apt install -y percona-xtrabackup-24 # Ubuntu/Debian
sudo innobackupex --decompress --remove-original /backups/physical_backup
--decompress:解压备份文件;--remove-original:删除原始压缩文件(可选)。sudo innobackupex --apply-log /backups/physical_backup
--apply-log:应用备份中的事务日志,确保数据一致性。sudo rsync -avz /backups/physical_backup/ /var/lib/mongodb/
sudo systemctl start mongod
若逻辑备份或Oplog恢复无效,可尝试第三方工具(如MongoDB Repair Tool、MongoDB Rescue),但此类工具通常针对物理文件损坏的情况,且效果取决于数据损坏程度。建议优先使用官方工具恢复。
恢复完成后,通过Mongo Shell验证数据是否恢复成功:
mongo --host localhost -u <username> -p <password> --authenticationDatabase admin
show dbs; // 查看所有数据库
use mydb; // 切换到目标数据库
show collections; // 查看所有集合
db.mycollection.find(); // 查询集合中的数据
注意事项: