在Ubuntu系統上排查MongoDB故障,需遵循“狀態檢查→日志分析→配置驗證→權限與資源確認”的流程,逐步定位問題根源。以下是具體步驟:
首先確認MongoDB服務是否處于運行狀態,使用以下命令查看服務狀態:
sudo systemctl status mongod
若服務未運行(顯示“inactive”或“failed”),嘗試啟動服務:
sudo systemctl start mongod
若需設置開機自啟,執行:
sudo systemctl enable mongod
啟動失敗時,需進一步查看日志分析原因。
日志是故障排查的核心依據,MongoDB默認日志路徑為**/var/log/mongodb/mongod.log**。使用以下命令實時查看日志末尾內容(快速定位最新錯誤):
sudo tail -f /var/log/mongodb/mongod.log
若需篩選特定時間段或錯誤類型(如慢查詢),可使用mtools工具(需提前安裝):
# 安裝mtools
sudo pip3 install mtools
# 篩選2025-09-01以來的慢查詢(耗時超過60秒)
sudo mlogfilter /var/log/mongodb/mongod.log --from "2025-09-01" --slow 60000
日志中常見錯誤包括“Permission denied”(權限問題)、“Port already in use”(端口占用)、“Failed to start database”(數據目錄損壞)等。
MongoDB主配置文件路徑為**/etc/mongod.conf**,需檢查以下關鍵配置項:
sudo systemctl restart mongod
可使用以下命令快速檢查配置文件語法:
mongod --config /etc/mongod.conf --eval "printjson(db.adminCommand({ping:1}))"
若語法錯誤,命令會返回具體報錯信息。
MongoDB數據目錄(由dbPath指定,默認為“/var/lib/mongodb”)需滿足以下條件:
sudo mkdir -p /var/lib/mongodb創建;sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod -R 755 /var/lib/mongodb
權限問題常導致“Failed to start database”或“Cannot write to data directory”錯誤。
MongoDB默認使用27017端口,需確保端口未被占用:
sudo netstat -tulnp | grep 27017
若端口被占用,可通過kill -9 <PID>終止占用進程,或修改配置文件中的port項。
同時,需開放防火墻端口(若啟用ufw):
sudo ufw allow 27017
遠程連接時,還需確??蛻舳朔阑饓υ试S出站連接到該端口。
若需遠程連接MongoDB,需完成以下配置:
sudo systemctl restart mongod;MongoDB性能問題常與系統資源不足相關,需檢查以下指標:
free -h(確保剩余內存足夠,避免OOM Killer終止進程);df -h(確保數據目錄所在分區有足夠空間,建議保留至少20%空閑空間);top或htop(確保CPU占用率未長期超過80%)。sudo systemctl stop mongod
sudo mongod --dbpath /var/lib/mongodb --repair
sudo systemctl start mongod
通過以上步驟,可覆蓋Ubuntu上MongoDB故障的常見場景。若問題仍未解決,建議查閱MongoDB官方文檔(如MongoDB故障排查指南)或社區論壇(如Stack Overflow)獲取更具體的幫助。