MongoDB在Ubuntu上的数据恢复方法
在进行数据恢复前,务必停止MongoDB服务以避免数据冲突或损坏。使用以下命令停止服务:
sudo systemctl stop mongod
mongorestore是MongoDB官方提供的核心恢复工具,适用于从mongodump生成的备份文件(如目录或压缩包)恢复数据。
mongorestore --db <目标数据库名> /path/to/backup/directory
例如,恢复/backup/mydb目录下的mydb数据库:mongorestore --db mydb /backup/mydb
.tar.gz格式,需添加--gzip选项:mongorestore --gzip /path/to/backup/file.tar.gz
--drop选项先删除现有数据:mongorestore --drop --db mydb /backup/mydb
若MongoDB运行在复制集模式下,可通过oplog(操作日志)恢复到故障前的某一时间点。
--oplogReplay和--oplogLimit选项(需指定时间戳)。mongorestore --oplogReplay /path/to/oplog/backup
若集群中有正常运行的副本集成员,可直接将其数据同步到故障节点:
mongod服务;/var/lib/mongodb)中的所有文件:sudo rm -rf /var/lib/mongodb/*
rsync);mongod服务,它会自动从副本集同步数据。若上述方法无法解决(如数据文件损坏),可使用第三方工具:
若数据文件损坏(如mongod.lock残留或文件系统错误),可通过以下步骤修复:
sudo rm -rf /var/lib/mongodb/mongod.lock
sudo find / -name "mongod.lock" -exec rm -rf {} \;
sudo mongod --repair --dbpath /var/lib/mongodb
sudo systemctl start mongod
mongodb,修复后需调整权限:sudo chown -R mongodb:mongodb /var/lib/mongodb