Mongodb

使用分片的配置文件啟動 mongod 守護程序

  • October 4, 2018

在 Linux 機器上,我更改了mongod.service文件以執行我創建的配置文件。

ExecStart=/usr/bin/mongod --config /etc/some_name.conf

當我手動使用此配置文件啟動 mongod 時,它執行良好。然而,當我使用這個配置文件執行 mongod 守護程序時,它失敗了。

我確實systemctl daemon-reload在更改後執行,但仍然失敗。

有人也處理過這個問題嗎?

更新

我已將日誌文件中的錯誤隔離到這一行:

I STORAGE  [initandlisten] exception in initAndListen: IllegalOperation: 
Attempted to create a lock file on a read-only directory: /data/db, terminating
I CONTROL  [initandlisten] now exiting

我嘗試將目錄 /data 和 /data/db 的所有權更改為 mongodb:mongodb 但沒有修復此錯誤。當我執行時,還更改了目錄的權限,sudo chmod -R 775 /data但仍然出現相同的錯誤:

sudo service mongod restart
sudo service mongod status

狀態仍然失敗,並且日誌文件中出現同樣的錯誤。

對我有用的是刪除 /data/db 路徑中的 ‘db’ 目錄,然後創建一個新的 ‘db’ 目錄。這擺脫了這個錯誤:

I STORAGE  [initandlisten] exception in initAndListen: IllegalOperation: 
Attempted to create a lock file on a read-only directory: /data/db, terminating
I CONTROL  [initandlisten] now exiting 

我做的另一件事是創建一個只有準系統必需品的新 mongod.service 文件(預設的 mongod.service 有很多額外的配置):

[Unit]
After=network.target

[Service]
ExecStart=/usr/bin/mongod --config /etc/<config_file_name>.conf

[Install]
WantedBy=multi-user.target

執行此操作後執行以下命令:

sudo service mongod restart
sudo service mongod status

它應該正在執行。希望這可以幫助!

所以,你創建了 mongod.service 文件,你還記得告訴 systemd 你正在將該 pid 分叉到後台嗎?如果沒有,systemd 將在啟動後立即終止該程序。

然後就是@stennie 寫的,如果你以 root 使用者身份啟動一次 mongod,一些文件會以 root:root 身份創建,之後,沒有其他人(如使用者 mongod)無法啟動 mongod-process。那麼,這些文件和目錄是什麼,必須將其所有權設置為 mongod(或者您用來啟動 mongod-process 的任何使用者)

  • mongod.log /var/log/mongod/-directory (或者你在配置文件中寫的)
  • /var/run/mongodb/mongod.pid (或在配置文件中設置的內容)
  • 數據所在的目錄(和文件)。

日誌文件很重要,因為 mongod-process 可以寫入它之後,如果出現問題,它會告訴你出了什麼問題……

引用自:https://dba.stackexchange.com/questions/205518