初始安装后MongoDB服务无法启动

问题描述 投票:14回答:11

我正在运行Fedora 20并在官方文档中按照Red Hat installation guide安装了MongoDB。我能够第一次运行mongod守护程序作为服务而没有错误但是当我关闭我的机器并回来时,由于某些故障,该服务拒绝启动。

在我成功运行后列出的日志中,我看到了:

***** SERVER RESTARTED *****
ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory

如果我尝试启动mongod或手动运行mongod --repair,我会在启动失败时收到此消息:

ERROR: dbpath (/data/db) does not exist.
Create this directory or give existing directory in --dbpath.

考虑到在/etc/mongod.conf的配置文件中,数据库路径的设置如下:

dbpath=/var/lib/mongo

最后,如果我运行此命令:

mongod --dbpath /var/lib/mongo

守护进程很好。但是,我无法复制启动服务的无错误行为。

任何人都可以告诉我究竟是什么问题以及如何开始运行mongod作为服务?

编辑

如果我运行mongod --config /etc/mongod.conf,我会收到此消息:

about to fork child process, waiting until server is ready for connections. forked process: 2702 ERROR: child process failed, exited with error number 1

/var/run/mongodb目录不存在,所以我创建并将其分配给mongod用户。遗憾的是,这并没有太大的区别。

我的/var/log/mongodb/mongod.log显示了这条消息:

[initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /var/lib/mongo/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

linux mongodb fedora
11个回答
32
投票

在Fedora 20上对我有用的是:我们需要在每次启动时创建临时目录,并由systemd-tmpfiles处理。因此,创建一个文件/lib/tmpfiles.d/mongodb.conf并在其中放入一行:

d /var/run/mongodb 0755 mongod mongod

这似乎是在重启时处理的;如果您不想立即重新启动,可以使用以下命令执行:

sudo systemd-tmpfiles --create mongodb.conf

(参见systemd-tmpfiles的手册页)


0
投票

我们需要创建由systemd-tmpfiles处理的pidfile rm /var/lib/mongo/mongod.lock chown -R mongod:mongod /var/log/mongodb/ chown -R mongod:mongod /var/run/mongodb/ chown -R mongod:mongod /var/lib/mongo/ chmod 777 /var/run/mongodb/mongod.pid mongod --dbpath /var/lib/mongo 的临时目录位置。因此,以root身份创建文件/lib/tmpfiles.d/mongodb.conf:

lnx#> sudo su lnx#> cd /lib/tmpfiles.d lnx#> echo“d / var / run / mongodb 0755 mongod mongod”> mongodb.conf

然后重启或运行此命令以激活该临时目录:

lnx#> sudo systemd-tmpfiles --create mongodb.conf

启动mongod服务:

lnx#> sudo systemctl start mongod.service

参考书目:/var/run/mongodb


0
投票

这在Ubuntu中对我有用:

Fedora And Mongodb · l33tsource

8
投票

我有同样的问题,我暂时解决了,禁用SELinux,重启机器,淘汰了mongod.lock:

#rm /var/lib/mongo/mongod.lock

通过创建文件/var/run/mongodb/mongo.pid(如配置文件/etc/mongod.conf中所述):

#mkdir /var/run/mongodb
#touch /var/run/mongodb/mongod.pid

并授予777权限:

#chmod 777 /var/run/mongodb/mongod.pid 

并启动mongo:

#service mongod start

但重启机器后问题仍然存在。文件夹和文件消失。


7
投票

我花了一些时间研究这个,看起来好像pid文件夹和文件权限不能与默认守护进程一起使用。

我遇到的最简单的解决方案是通过在配置文件中的行前放一个#来禁用pid文件。

vi /etc/mongod.conf

找到说pidfilepath = / var / run / mongodb / mongod.pid的行并相应地更改它。

# pidfilepath=/var/run/mongodb/mongod.pid

有关评论的信息请点击此处查看。 http://docs.mongodb.org/manual/reference/configuration-options/#processManagement.pidFilePath


5
投票

如果您使用以下命令启动mongodb作为服务:

sudo服务mongod开始

确保mongod.conf中为logpath,dbpath和pidfilepath定义的目录存在并且由mongod:mongod拥有。


1
投票

我在OpenSuse 13.2上运行mongodb 3.0.4遇到同样的问题,我发现/ var / run下的mongod目录丢失了。如果我手动创建目录,它将在重新启动后消失。

我通过在/etc/init.d/mongod启动脚本中添加以下行来解决它:

mkdir -p /var/run/mongod  
chown $MONGO_USER:$MONGO_GROUP /var/run/mongod

0
投票

我遇到了同样的问题,当我修改我的mongod.conf如下并解决问题〜

port=27017
dbpath=/usr/local/mongodb/data/db/
logpath=/usr/local/mongodb/logs
fork = true

提示:logpath是日志文件而不是文件夹。


0
投票

我刚刚在ubuntu上遇到过类似的问题。遇到几乎每个ERROR提示,比如

child process failed, exited with error number 1

orkazxsopoi

或者child process failed, exited with error number 100

我多次删除Mongodb并尝试重新安装,但问题仍然存在......

最后我采用了这种方式:首先备份您的数据,然后删除Mongodb

[signalProcessingThread] got signal 2 (Interrupt: 2), will terminate after current cmd ends

找出与mongodb相关的所有文件:

#sudo apk-get autoremove mongodb-org

使用“rm”或“rmdir”删除它们,包括/ var / cache / ...中的包和everthing。

然后在第一次重复安装:

/#find -name mongo*

它会再次运行。


0
投票

在“mongo.conf”文件的下面注释。

pidfilepath =的/ var /运行/ mongodb的/ mongod.pid


0
投票

以下命令解决了分数

错误:

#echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
#sudo apt-get update
#sudo apt-get install -y mongodb-org

固定方式:

 service mongod status
 Error starting mongod. /var/run/mongodb/mongod.pid exists
© www.soinside.com 2019 - 2024. All rights reserved.