在啟動恢復流程前,需先通過以下步驟定位故障根源,避免盲目操作:
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狀態,及時發現異常;