在启动恢复流程前,需先通过以下步骤定位故障根源,避免盲目操作:
sudo systemctl status mongod(或sudo service mongod status)检查MongoDB服务是否运行。若未运行,需进一步排查原因。/var/log/mongodb/mongod.log,使用sudo tail -n 100 /var/log/mongodb/mongod.log查看最近100条日志,重点关注“ERROR”“FAILED”等关键词,定位具体故障类型(如配置错误、权限问题、数据损坏)。/etc/mongod.conf配置文件的正确性,重点检查以下关键项:
storage.dbPath:数据目录是否存在且路径正确;net.bindIp:绑定的IP地址是否符合需求(如0.0.0.0允许远程访问);systemLog.path:日志文件路径是否可写。sudo lsof -i :27017或sudo netstat -tulpn | grep 27017检查端口是否被其他进程占用。若被占用,终止占用进程(sudo kill <PID>)或修改配置文件中的端口。mongodb用户运行,需确保数据目录(如/var/lib/mongodb)和日志文件的权限正确。使用sudo chown -R mongodb:mongodb /var/lib/mongodb修改数据目录所有者,使用sudo chmod -R 755 /var/lib/mongodb设置合理权限。sudo vim /etc/systemd/system/mongodb.service(若未创建,可复制默认配置),确保ExecStart指向正确路径(如ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf);sudo systemctl daemon-reload → sudo systemctl start mongod。sudo systemctl start mongod;sudo rm /var/lib/mongodb/mongod.lock),并以修复模式启动MongoDB:sudo mongod --repair --dbpath /var/lib/mongodb;sudo systemctl start mongod。sudo systemctl stop mongod;sudo mongod --repair --dbpath /var/lib/mongodb(修复过程可能需要较长时间,取决于数据量);sudo systemctl start mongod。sudo cp -r /var/lib/mongodb /var/lib/mongodb_backup),避免修复失败导致数据丢失。mongodb用户,日志中常见“Permission denied”。sudo chown -R mongodb:mongodb /var/lib/mongodb;/var/log/mongodb/mongod.log):sudo chown mongodb:mongodb /var/log/mongodb/mongod.log;sudo systemctl start mongod。若故障导致数据丢失,可通过以下方法恢复(需提前有备份):
mongodump工具导出数据(支持全库、指定集合或查询结果)。例如,导出mydb数据库到/backup目录:mongodump --uri="mongodb://user:password@localhost:27017/mydb" --out=/backup。mongorestore工具导入数据。例如,恢复mydb数据库:mongorestore --uri="mongodb://user:password@localhost:27017/mydb" /backup/mydb(若需覆盖现有数据,添加--drop参数)。sudo systemctl stop mongod),复制数据目录到备份路径(如/backup):cp -r /var/lib/mongodb /backup。sudo cp -r /backup/mongodb /var/lib/),启动服务(sudo systemctl start mongod)。dump/local/oplog.rs.bson)。mongorestore恢复全量备份:mongorestore --uri="mongodb://user:password@localhost:27017/" /backup;mongorestore --uri="mongodb://user:password@localhost:27017/" --oplogReplay /backup。若上述方法无效,可使用第三方工具(如MongoDB Compass、Robo 3T、EaseUS Data Recovery Wizard for MongoDB)尝试恢复。需注意:
mongostat(查看性能指标)、mongotop(查看集合读写情况)监控MongoDB状态,及时发现异常;