mongodb服務無法開啟怎麼辦

firefule發表於2021-09-11

mongodb服務無法開啟怎麼辦

MongoDB無法啟動的解決方法

遇到MongoDB突然無法啟動,第一反應是刪除mongod.lock。這個檔案在MongoDB的資料庫目錄下,預設是/data/db。這是最常見

的問題了,產生原因是MongoDB沒有正常結束(比如被kill -9殺掉或是其他意外情況導致中斷)。

還一些其他情況會導致MongoDB無法啟動。本文討論的無法啟動,是指:使用/etc/init.d/mongodb start或是sudo service mongdb 

start,提示mongodb start/running,但檢視status仍然是stop/waiting。

service SERVERNAME status有可能誤報,先確認MongoDB的實際狀態。主要是ps axu|grep mongod檢視是否有相關程式,開啟

links或是直接用瀏覽器訪問127.0.0.1:28017,看不到MongoDB的資訊說明沒有啟動。

然後執行:

$ sudo mongod –repair –config /etc/mongodb.conf
$ sudo mongod –config /etc/mongodb.conf

第一條命令是修復操作,第二條命令是手動指定MongoDB的配置檔案,在終端中直接執行,這樣輸出錯誤時比較直觀,不用去翻日誌。

如果能順利執行mongod,說明配置檔案和資料庫都沒有問題,是/usr/bin/mongodb許可權不夠,請參考本文結尾setcap方法。

如果不能執行,可以看到報錯資訊,分三種情況:配置檔案錯誤,資料目錄設定錯誤,/usr/bin/mongod檔案錯誤。

配置檔案錯誤比較明顯,引數錯誤會明確提示error command line: unknown option xxx。第二條命令中明確指定使用的配置檔案,也

容易排錯。所以除了之前配MongoDB主從修改配置檔案弄壞過一次,很少遇到配置檔案的問題。

其次是資料目錄,主要是許可權問題,可能的報錯是:

Thu 22 11 10:03:30 [initandlisten] warning couldn’t write to / rename file /srv/mongodb/journal/prealloc.0
Thu 22 11 10:03:30 [initandlisten] couldn’t open /srv/mongodb/duoshuo.ns errno:1 Operation not permitted
Thu 22 11 10:03:30 [initandlisten] error couldn’t open file /srv/mongodb/duoshuo.ns terminating

資料目錄的owner應該是mongodb:mongodb。

$ sudo chown mongodb:mongodb mongodb

最後一種情況是/usr/bin/mongod的問題。它的報錯和目錄沒有讀寫許可權一樣,但即使你把MongoDB的資料庫目錄設定成777,一樣會

有問題。因為mongod是以O_NOATIME標誌來訪問檔案系統的,mongodb沒有這個許可權,用setcap設定:

# setcap cap_fowner+ep /usr/bin/mongod

如果這樣都不行…備份資料庫然後apt-get purge 解除安裝重灌吧。

推薦學習《》。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1834/viewspace-2834434/,如需轉載,請註明出處,否則將追究法律責任。

相關文章