【问题标题】:Mongo Restart Error -- /var/run/mongodb/mongod.pid existsMongo 重启错误 -- /var/run/mongodb/mongod.pid 存在
【发布时间】:2021-07-20 02:14:22
【问题描述】:

我刚刚启动了一个新的 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 之前从未遇到过这个问题。

【问题讨论】:

  • 尝试 'sudo rm /var/run/mongodb/mongod.pid' 然后重新启动服务
  • 你好戴夫,是的,这是我做的第一件事。那没起效。该文件仅包含一行“2943”。我猜这是某些 MongoDB 进程的 PID。
  • 得到同样的错误,这是因为本地存储空间已满,运行df -h看到,从EBS(本地存储)中删除了几个文件,然后运行正常。 /dev/xvda1 7.8G 7.7G 0M 100%

标签: mongodb amazon-web-services


【解决方案1】:

好的,找到问题了。我按照上面 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/ 权限。删除 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,就可以避免这个问题。在这一天浪费了佛罗里达阳光明媚的一天。

【讨论】:

  • 相同的设置和问题,但我仍然无法启动。我还必须rm /var/lib/mongo/mongod.lock 然后它仍然认为默认地址已经在使用中。必须确保 /var/run/mongodb/mongod.pid 再次消失,mongod.lock 再次消失,然后 mkdir /data/dbchown -R mongod:mongod /data 在它最终启动、停止和重新启动之前。祝你好运。
  • 我回去查看了我的安装说明。这些天,我对我在服务器上安装的所有内容都保留了安装说明。消除了很多重新发现的问题。我仔细查看了它们并注意到我做了以下注释“为了确保 Mongo 在重新启动后重新启动,请输入以下命令:sudo chkconfig mongod on”。我相信这是根本问题。首次启动 mongo 后,您需要执行 chkconfig 命令。
  • 在基于 Debian 的系统下尝试 mongodb 作为用户/组。
  • 相同的结构,它工作得很好。节省了在故障排除上浪费的几个小时
【解决方案2】:

好的,在我的第一个答案中找到了一个更好的解决方案。我之前的回答只是消除了症状。我看到其他几个人不得不 chown 各种其他目录。我认为问题在于 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 版本。

【讨论】:

  • sudo chkconfig mongod on 工作 - 谢谢!在此之后使用sudo mongod -f /etc/mongod.conf 启动服务
  • 这对我有用,现在可以通过 shell 和 nodejs 连接到我的 mongoDB,但我仍然收到此错误“错误启动 mongod。/var/run/mongodb/mongod.pid 存在。”在检查状态!
【解决方案3】:

你可以更改配置文件中的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

【讨论】:

    【解决方案4】:

    如果用户和组的分配不起作用,您还有另一种选择,但这直接取决于 sock 文件的状态。

    我移动了 mongodb-27017.sock 并重命名了它,删除了 .pid 文件并启动了服务,这样进程就可以工作了

    sudo mv /tmp/mongodb-27017.sock /tmp/mongodb-27017.sock2
    sudo rm /var/run/mongodb/mongod.pid
    sudo service mongod start
    

    【讨论】:

      【解决方案5】:

      尝试重新启动服务器,连接到服务器并再次运行该命令。对我来说效果很好。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-30
          • 2015-07-08
          • 1970-01-01
          • 2014-10-02
          • 1970-01-01
          • 1970-01-01
          • 2018-08-25
          • 1970-01-01
          相关资源
          最近更新 更多