Mongodb

mongoDb 2.6 無法使用 init 腳本在 Oracle Linux 上啟動

  • September 24, 2014

使用 yum 在 OL 6.3 上安裝了 MongoDb 2.6.3,但是在嘗試停止和啟動 mongod 服務時,預設的 init 腳本似乎都失敗了。我可以追踪停止到$pid_file被檢測為的問題_/var/run/mongodb/mongod.pid(即路徑前面有一個空格)。刪除該空間後,可以停止 mongod。

但是,我似乎無法使用相同的腳本啟動它(在停止修復之前也是如此)。發出service mongod start命令後,我得到ERROR: child process failed, exited with error number 1and in the logs: ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: Success,就在***** SERVER RESTARTED *****行,並在引用的位置創建一個空的 pidfile。即使我增加日誌詳細程度,也沒有其他任何顯示。如果我以 root 身份執行 Mongod,它可以正常啟動,但如果我使用非特權使用者 (mongod),則會發生上述情況。我可以通過執行最終在有和沒有使用者更改的情況下執行的命令來檢測這一點 -runuser -s /bin/bash mongod -c "ulimit -S -c 0 ; numactl --interleave=all /usr/bin/mongod -f /etc/mongod.conf"

附加資訊 - 我使用的是 2.4 配置格式:

logpath   = /data/mongodb/log/mongod.log
logappend = true
fork      = true
dbpath    = /data/mongodb/db
auth      = true
port        = 27017
pidfilepath = /var/run/mongodb/mongod.pid
traceExceptions = true
verbose = true
vvvv = true

keyFile=/data/mongodb/keyfile

檢查 pidfile 路徑上的權限,它們似乎沒問題(父母上的 rx,mongodb 上的 rwx)。此外,在另一個盒子(相同的作業系統)上,mongoDb 2.4 執行良好。任何的想法?

編輯- 如果我不使用 pidfile(沒有設置 pidfilepath),一切似乎都可以正常工作,但這不能算作解決方案,而是一種解決方法……

這似乎與SERVER-14679 “(CentOS 7/RHEL 7) init.d script should create directory for pid file if it is missing”相關,在 2.6.5 中已修復。

同時,請根據此送出編輯初始化腳本。

請在票證中添加一條註釋,說明它適用於 Oracle Linux,以防修改後的 init 腳本按預期啟動 MongoDB。

引用自:https://serverfault.com/questions/628281