使用分片的配置文件啟動 mongod 守護程序
在 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 可以寫入它之後,如果出現問題,它會告訴你出了什麼問題……