Ubuntu MongoDB故障排查步驟
首先確認MongoDB服務是否正在運行,使用以下命令查看服務狀態:
sudo systemctl status mongod
若服務未運行,啟動服務:sudo systemctl start mongod
;設置開機自啟:sudo systemctl enable mongod
。
日志文件是故障排查的關鍵,MongoDB默認日志路徑為/var/log/mongodb/mongod.log
。使用以下命令實時查看日志尾部信息,定位具體錯誤:
sudo tail -f /var/log/mongodb/mongod.log
日志中可能包含啟動失敗、連接拒絕、權限問題等關鍵線索。
MongoDB主配置文件通常位于/etc/mongod.conf
,需檢查以下核心配置項:
net.bindIp
:確保綁定IP正確(本地測試用127.0.0.1
,遠程訪問用0.0.0.0
);storage.dbPath
:數據目錄是否存在(默認/var/lib/mongodb
);systemLog.path
:日志路徑是否可寫;security.authorization
:若啟用身份驗證,需確保用戶權限正確。sudo systemctl restart mongod
。MongoDB需要對數據目錄有讀寫權限,數據目錄通常為/var/lib/mongodb
。執行以下命令修復權限:
sudo mkdir -p /var/lib/mongodb
(若目錄不存在則創建);
sudo chown -R mongodb:mongodb /var/lib/mongodb
(將目錄所有者設為mongodb
用戶);
sudo chmod -R 0755 /var/lib/mongodb
(設置目錄權限為可讀可執行)。
若出現“連接被拒絕”或遠程無法訪問問題,需檢查防火墻是否允許MongoDB默認端口(27017)的流量。使用以下命令開放端口:
sudo ufw allow 27017
;
查看防火墻狀態確認規則已添加:sudo ufw status
。
MongoDB默認使用27017端口,若該端口被其他進程占用,會導致服務無法啟動。使用以下命令檢查端口占用情況:
sudo netstat -tulnp | grep 27017
若發現占用進程,可停止該進程(sudo kill -9 <PID>
)或修改MongoDB配置文件中的net.port
為其他端口(如27018),然后重啟服務。
若數據目錄損壞(如異常關機導致mongod.lock
文件殘留),需刪除鎖文件并修復數據:
sudo find / -name "mongod.lock" | xargs rm -rf
(查找并刪除所有mongod.lock
文件);
以修復模式啟動MongoDB:sudo mongod -f /etc/mongod.conf --repair
;
修復完成后,正常啟動服務:sudo systemctl start mongod
。
確保系統有足夠的內存和磁盤空間供MongoDB運行。使用以下命令查看資源使用情況:
free -h
(查看內存使用,確保剩余內存充足);
df -h
(查看磁盤空間,確保/var/lib/mongodb
所在分區有足夠空間,建議預留20%以上)。
若需遠程訪問MongoDB,需確保以下配置正確:
net.bindIp
設置為0.0.0.0
(允許所有IP連接);security.authorization: enabled
)并創建遠程訪問用戶。mongo --host <服務器IP> --port 27017 -u <用戶名> -p <密碼> --authenticationDatabase admin
。