【问题标题】:MongoDB not using /etc/mongodb.conf after I changed dbpath更改 dbpath 后,MongoDB 未使用 /etc/mongodb.conf
【发布时间】:2012-09-16 03:31:33
【问题描述】:

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

在我进行修改后(为了切换到具有更多空间的新驱动器),我可以让一切正常工作的唯一方法是手动运行命令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
  • 我将所有者和组从root 更改为nick。尝试将其改回,但似乎没有解决任何问题。
  • 我正在运行 Ubuntu 12.10 Beta 1 和 Mongo 2.2.0 以及 Ruby on Rails 3.2.8

【问题讨论】:

  • dmesg 或日志文件告诉你在启动期间盯着 mongodb 的信息是什么?

标签: mongodb


【解决方案1】:

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

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

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

/etc/mongodb.conf 将被完全忽略,除非有明确指示。

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

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

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

【讨论】:

  • 由于这不是问题的解决方案,因此最好将其作为对原始问题的评论而不是答案。
  • 我很乐意将此作为评论留下,但要评论其他用户的帖子“您必须有 50 声望才能评论”
  • @PeterFox 这里提出的解决方案是什么?问题已经表明mongod --config 有效,但目标是让 mongo 在系统启动时自动启动并使用正确的数据库而无需额外的标志。感谢 kman 对问题的确认,但这篇文章似乎以一个没有解决方案的问题结束。
  • 我也面临同样的问题。我的 mongod.conf 文件有不同的设置,当它运行 db path 时,端口号一切都不同。
【解决方案2】:

原来我需要将所有者和组设置为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

【讨论】:

  • 尼克...感谢您的更新。抱歉,当我几天前阅读该问题时,我错过了您在原始描述中更改所有权的那一点。这是因为mongodmongodb 用户下运行,该用户在安装时通过.deb 包进行配置。您也可以将目录保留为 Nick 拥有的目录,并使用 chmod 通过“组”或“全部”授予 mongodb 写入权限。
【解决方案3】:

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

sudo chown mongod:mongod mongodb-27017.sock 

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

sudo -S -u mongod mongod -f /etc/mongod.conf

【讨论】:

    【解决方案4】:

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

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

    请在配置文件选项中查看link

    【讨论】:

    • 对不起,我弄错了。我安装了 2.2.0,但我在我的应用程序上检查了我的 Ruby gem 的版本是 1.6。问题已更新。我确实是通过 aptitude 安装的。
    • 你能把你的配置文件的副本放在 gist/pastie/pastebin 和一个更大的 mongodb 日志文件的 sn-p 上吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2017-05-22
    • 2017-08-18
    相关资源
    最近更新 更多