首先確認MongoDB服務是否正在運行,使用以下命令查看服務狀態:
sudo systemctl status mongod
若服務未啟動,可通過以下命令啟動并設置開機自啟:
sudo systemctl start mongod
sudo systemctl enable mongod
MongoDB的日志文件是故障排查的核心依據,默認路徑為/var/log/mongodb/mongod.log
??墒褂靡韵旅顚崟r查看日志:
sudo tail -f /var/log/mongodb/mongod.log
同時,通過journalctl
查看系統日志中與MongoDB相關的錯誤信息:
sudo journalctl -xe | grep mongod
MongoDB的主配置文件為/etc/mongod.conf
,需重點檢查以下關鍵配置項:
dbPath
:數據存儲目錄是否存在且具備讀寫權限;logPath
:日志文件路徑是否正確;net.port
:監聽端口(默認27017)是否被占用;security.authorization
:身份驗證配置是否符合需求(如啟用后需用用戶名密碼登錄)。MongoDB默認使用27017端口,若端口被占用,可通過以下命令查找占用進程并終止:
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep 27017
sudo kill -9 <PID> # 替換為實際進程ID
df -h
命令檢查數據目錄所在磁盤的剩余空間,確保充足(建議保留至少20%空間);top
或htop
命令查看系統資源使用情況,避免因資源耗盡導致MongoDB崩潰;/var/lib/mongo
)和日志目錄的所有者為mongod
用戶(默認):sudo chown -R mongod:mongod /var/lib/mongo
sudo chown -R mongod:mongod /var/log/mongodb
若系統啟用了SELinux(sestatus
顯示Enforcing
模式),可能會阻止MongoDB正常運行??膳R時將其設置為permissive
模式排查:
sudo setenforce 0
若問題解決,需調整SELinux規則或永久禁用(不推薦生產環境):
sudo vi /etc/selinux/config # 將SELINUX=enforcing改為disabled
若MongoDB因崩潰停止,可分析/var/crash
目錄下的內核轉儲文件(vmcore
),使用crash
工具定位崩潰原因:
sudo yum install crash # 安裝crash工具
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/vmcore
舊版本MongoDB可能存在已知bug,建議升級到最新穩定版本(通過mongod --version
查看當前版本),升級前需備份數據。
若以上步驟無法解決問題,可查閱MongoDB官方文檔、社區論壇(如Stack Overflow),或聯系MongoDB技術支持團隊,提供詳細的錯誤日志和系統信息以獲取進一步幫助。