Ubuntu下MongoDB数据恢复指南
sudo systemctl stop mongod
.bson
(单库/单集合)、.archive
(多库/压缩包)格式,或存储在指定目录(如/backup
)中。若备份为.bson
文件(如/backup/mydb
目录下的mycollection.bson
),可使用以下命令恢复指定数据库:
mongorestore --db <数据库名> <备份目录>
示例(恢复mydb
数据库中的mycollection
集合):
mongorestore --db mydb /backup/mydb/mycollection.bson
若备份为.archive
压缩包(如mongoDB.archive
),需添加--archive
参数指定文件路径。若文件为.gz
压缩格式,需同时添加--gzip
参数:
mongorestore --host <服务器地址> --port <端口> --db <数据库名> --archive:"<备份文件路径>" --gzip
示例(恢复本地mongoDB.archive
到mydb
数据库):
mongorestore --host localhost --port 27017 --db mydb --archive:"./mongoDB.archive" --gzip
若需彻底替换现有数据库,可添加--drop
参数,恢复前会删除目标数据库中的所有数据:
mongorestore --db mydb --drop /backup/mydb
若数据因误操作(如drop database
)丢失,且开启了oplog(MongoDB复制集默认开启),可通过重放oplog恢复到指定时间点。
sudo systemctl stop mongod
mkdir -p /tmp/mongorestore_temp
mongorestore --db <数据库名> --oplogReplay --oplogLimit=<时间戳> /backup/oplog.bson
其中<时间戳>
为误操作发生的时间(如1713561600
,对应2024-04-19 00:00:00 UTC)。/var/lib/mongodb
),重启服务即可。恢复完成后,启动MongoDB服务并连接验证数据:
sudo systemctl start mongod
mongo
进入目标数据库,查询集合数据:
use mydb
db.mycollection.find().pretty()
mongorestore
工具版本需≥备份工具版本,且恢复服务器版本≥备份时的MongoDB服务版本(如备份用4.4版工具,恢复用5.0版服务器可行,反之可能失败)。