适用场景:有通过mongodump生成的常规备份(.bson/.tar.gz格式)。
操作步骤:
sudo systemctl stop mongod。/backups/mongodb/mydb.bson)完整且未损坏。.bson文件:直接指定备份目录,mongorestore --db 目标数据库名 /path/to/backup/directory(如mongorestore --db mydb /backups/mongodb);.tar.gz压缩包:添加--gzip参数解压并恢复,mongorestore --gzip /path/to/backup.tar.gz;-c参数,如mongorestore -d mydb -c mycollection /path/to/backup/mycollection.bson。sudo systemctl start mongod。适用场景:数据丢失发生在最近一次完整备份之后,且备份时启用了Oplog(默认开启)。
操作步骤:
local/oplog.rs集合(如使用mongodump --oplog)。--oplogReplay参数重放备份后的操作,如mongorestore --oplogReplay /path/to/backup/directory。适用场景:使用了支持快照的存储解决方案(如LVM、ZFS、云厂商的块存储快照)。
操作步骤:
/var/lib/mongodb)的快照。mongodb)对数据目录有读写权限,sudo chown -R mongodb:mongodb /var/lib/mongodb。sudo systemctl start mongod。适用场景:MongoDB数据文件(如_mdb_catalog.wt、集合文件)因磁盘故障、异常关机等损坏。
操作步骤:
wt可执行文件(如使用gcc和cmake)。wt工具扫描损坏的集合文件,提取可用数据并写入dump文件(如wt dump /path/to/corrupted/collection)。wt工具将dump文件导入新集合,重建索引。适用场景:常规方法无法恢复(如备份文件丢失、Oplog不完整),或需要图形化操作。
常用工具:
--read_only模式),避免数据覆盖。sudo cp -R /var/lib/mongodb /var/lib/mongodb_backup),防止恢复失败导致二次损失。