问题 Mongo重启错误 - /var/run/mongodb/mongod.pid存在


我刚刚开始使用新的AWS Linux AMI 2016.09.1(HVM)并下载了最新的Mongodb版本。我使用的是MongoDB 3.0.14版。我将/etc/mongod.conf更新为以下内容,

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  port: 27017
#  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on
    all interfaces.


#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

我第一次使用服务运行Mongodb,

sudo service mongod start

一切正常。当我停止Mongodb并重启时,

sudo service mongod stop
sudo service mongod restart

我收到以下错误,

Error starting mongod. /var/run/mongodb/mongod.pid exists.

这是日志文件/var/log/mongodb/mongod.log中的内容,

2017-01-16T14:11:16.869+0000 I CONTROL  ***** SERVER RESTARTED *****
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] MongoDB starting :
    pid=2820 port=27017 dbpath=/var/lib/mongo 64-bit hos
    t=ip-10-0-0-91
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] db version v3.0.14
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] git version:
    08352afcca24bfc145240a0fac9d28b978ab77f3
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] build info: Linux
    ip-10-63-190-181 3.4.43-43.43.amzn1.x86_64 #1 SMP Mon
    May 6 18:04:41 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] allocator: tcmalloc
2017-01-16T14:11:16.872+0000 I CONTROL  [initandlisten] options: { config:
    "/etc/mongod.conf", net: { port: 27017 }, processMan
    agement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid" },
    storage: { dbPath: "/var/lib/mongo", journal: { enabled: t
    rue } }, systemLog: { destination: "file", logAppend: true, path:   
    "/var/log/mongodb/mongod.log" } }
2017-01-16T14:11:16.893+0000 E NETWORK  [initandlisten] Failed to unlink
    socket file /tmp/mongodb-27017.sock errno:1 Operation
    not permitted
2017-01-16T14:11:16.893+0000 I -        [initandlisten] Fatal Assertion   
    28578
2017-01-16T14:11:16.893+0000 I -        [initandlisten]

***aborting after fassert() failure

我已经看到几个关于解决方案的问题的博客,但它们似乎都没有用。星期天整天都在努力想出这个。在运行早期的AWS实例和Mongo之前从未遇到此问题。


5689
2018-01-16 14:26


起源

尝试'sudo rm /var/run/mongodb/mongod.pid'然后再次重启服务 - Dave Maple
你好Dave,是的,这是我做的第一件事。它不起作用。该文件只包含一行“2943”。我猜这是一些MongoDB进程的PID。 - skmansfield
得到了同样的错误,因为本地存储空间已满,可见运行 df -h,从EBS(本地存储)中删除了一些文件,然后运行正常。 /dev/xvda1 7.8G 7.7G 0M 100% - 151291


答案:


好的,发现了问题。我删除了上面Dave Maples建议的/var/run/mongodb/mongod.pid文件。但是,MongoDB仍然无法运行。我再次查看了日志文件,现在看到它对这个文件咆哮,

/tmp/mongodb-27017.sock

看起来它没有正确的权限。我试过了,

sudo chown mongod:mongod /tmp/mongodb-27017.sock

它工作得很好。现在,当我多次启动/停止/重启MongoDB时,我不再有问题。我认为文件权限导致MongoDB无法正常清理自己,并在目录中留下/var/run/mongodb/mongod.pid文件。这导致“启动mongod./var/run/mongodb/mongod.pid存在错误”错误。然而,这不是真正的问题。真正的问题是/ tmp / permissions。删除mongod.pid文件并重新启动Mongod后查看日志文件显示权限问题。所以这就解决了这个问题,

sudo rm /var/run/mongodb/mongod.pid
sudo chown mongod:mongod /tmp/mongodb-27017.sock

我敢打赌,如果我在新服务器上安装MongoDB后立即尝试“sudo chown mongod:mongod /tmp/mongodb-27017.sock”,那么在运行MongoDB之前就可以避免这个问题了。在这一天浪费了一个完美的佛罗里达阳光灿烂的日子。


9
2018-01-16 15:30



相同的设置和问题,但仍然不会启动我。我也必须 rm /var/lib/mongo/mongod.lock 然后它仍然认为默认地址已被使用。不得不确定 /var/run/mongodb/mongod.pid 又走了 mongod.lock 又一次消失了 mkdir /data/db 和 chown -R mongod:mongod /data 在它最终开始,停止和重新启动之前。祝你好运。 - Rachel
我回去看了看我的安装说明。这些天我在我的服务器上安装的所有内容都会保留安装说明。消除了许多重新发现的问题。我仔细看了看它们,注意到我做了以下注释“为了确保Mongo在重新启动后重新启动,请输入以下命令:sudo chkconfig mongod on”。我相信这是根本问题。首次启动mongo后,您需要执行chkconfig命令。 - skmansfield
谢谢。它解决了我的问题。我的堆栈是Centos 6.5 - Ali Emre Çakmakoğlu


好的,找到了我在第一个答案中更好的解决方案。我之前的回答只是消除了症状。我看到其他几个人不得不打开各种其他目录。我认为问题是mongod没有正确重启并且因为失败而错误地设置了许多目录。我怀疑多个线程正在运行,因此错误设置的目录有点随机。我正在使用亚马逊的AWS AMI Linux版本并安装MongoDB 3.4。我发现了一个非常好的MongoDB安装脚本

 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-amazon/

所以这是修复。我测试了几次,每次都有效。像往常一样安装mongo。如果有帮助,请使用上述脚本。在启动mongod之前执行以下命令,

sudo chkconfig mongod on

您将注意到上面的安装脚本突出显示了chkconfig,但是在脚本底部可能看不到它。这将确保您每次都可以成功重启mongod。这应该适用于其他Linux版本。


4
2018-01-22 00:19



sudo chkconfig mongod on 工作 - 谢谢!在此之后开始服务 sudo mongod -f /etc/mongod.conf - mffap


你可以在配置文件中更改ip:

vim /etc/mongod.conf

#  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on
    all interfaces.
  bindIp: xxx.xxx.xxx.xxx

1
2018-06-02 10:35





停止服务器后,您正在尝试重新启动。您只能启动服务器。这就是你得到停止错误的原因。而且也不必担心这个错误。


-1
2017-07-24 07:56