15

自从我更改了dbpathin 后/etc/mongodb.conf,MongoDB 就没有自动启动,也没有使用新的dbpath. 在更改之前,MongoDB 将在计算机启动时运行,我能够简单地运行命令mongo进入控制台或启动我的 Ruby on Rails 服务器,没有任何问题。

在我进行修改后(为了切换到具有更多空间的新驱动器),我可以让一切正常工作的唯一方法是手动运行 command mongod --config /etc/mongodb.conf。如果我不运行它,那么在没有该选项的情况下,该服务似乎没有运行和运行--config给我以下错误:ERROR: dbpath (/data/db/) does not exist.即使配置文件没有说明data/db.

其他一些注意事项:

  • 除了更改之外/etc/mongodb.conf,我还将所有文件移出/var/lib/mongodb和移入/home/nick/appdev/mongodb.
  • 我将所有者和组从 更改rootnick。尝试将其更改回来,但它似乎没有解决任何问题。
  • 我正在使用 Ruby on Rails 3.2.8 运行 Ubuntu 12.10 Beta 1 和 Mongo 2.2.0
4

4 回答 4

23

对上述问题的后期跟进......

将 db 移动到 ec2 上的 ebs 后,我遇到了类似的问题。

事实证明,仅运行 mongod 仍然会将 dbpath 定向到 /data/db/ (存在)。

除非特别指出,否则将/etc/mongodb.conf完全忽略。

我设法通过使用指令--config或仅使用--dbpath(两者都工作)来解决这个问题,但是我想知道 mongod 从哪里获取它的默认值......?!

我无法在任何地方找到并覆盖这些默认值。任何人 ?

注意:我真的对 mongod 的这种行为感到恼火……这只是糟糕的设计和糟糕的文档。

于 2013-11-09T15:29:32.620 回答
10

事实证明,我需要将所有者和组设置为mongodb. 当我将文件转移到新目录时,我已将所有者和组设置为我的用户帐户nick并尝试root了,但两者都不起作用。

为此,请使用以下命令:

sudo chown mongodb /home/nick/appdev/mongodb -R
sudo chgrp mongodb /home/nick/appdev/mongodb -R

要确认它是否有效,您可以使用以下命令检查文件权限:

ls -l /home/nick/appdev/mongodb
于 2012-09-26T14:34:21.813 回答
1

按照建议检查数据、日志和日志文件夹中的所有权限后,通过授予 /tmp 文件夹中的锁定文件权限解决了我的问题

sudo chown mongod:mongod mongodb-27017.sock 

我将它作为 AWS Amazon Linux 实例运行。我通过以下方式以 mongod 用户身份执行,然后研究错误代码来解决这个问题。它可能对其他故障排除有用。

sudo -S -u mongod mongod -f /etc/mongod.conf
于 2017-01-13T17:18:31.923 回答
0

MongoDB 1.6已经很老了,最新的生产版本是2.2,其中包含自 1.6 以来的大量错误修复和增强。

我是否正确,您没有通过 yum 或 aptitude 等包管理器安装 1.6?我不相信目前 afaik 有 1.6 的软件包。因此,mongod由于您没有使用控制脚本启动 MongoDB,因此行为正确。

请参阅有关配置文件选项的此链接。

于 2012-09-24T17:00:39.317 回答