适用场景:有通过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
),防止恢复失败导致二次损失。