如何更改mongodb的默认位置?

时间:2014-10-23 03:35:06

标签: macos mongodb homebrew

我使用brew在Yosemite上安装了MongoDB。我知道默认存储位置是/ data / db。我想将其更改为location / Volumes / Data / mongodb,这样当我运行'mongod'时,它将默认选择/ Volumes / Data / mongodb中的数据库。我尝试编辑mongod.conf文件,我有

storage:
  dbPath: /Volumes/Data/mongodb

但是,每当我运行'mongod'时,它都会给我一条消息:

 ERROR: dbpath (/data/db) does not exist.
 Create this directory or give existing directory in --dbpath.
 See http://dochub.mongodb.org/core/startingandstoppingmongo

如果我给mongod --dbpath参数,它工作正常,但我希望它默认工作。为什么看起来我的mongod.conf文件没有被遵守。在谷歌搜索,似乎安装在不同位置的conf文件取决于操作系统和安装方法。运行db.serverCmdLineOpts()给出:

{
    "argv" : [
        "/usr/local/opt/mongodb/bin/mongod",
        "--config",
        "/usr/local/etc/mongod.conf"
    ],
    "parsed" : {
        "config" : "/usr/local/etc/mongod.conf",
        "net" : {
            "bindIp" : "127.0.0.1"
        },
        "storage" : {
            "dbPath" : "/Volumes/Data/mongodb"
        },
        "systemLog" : {
            "destination" : "file",
            "logAppend" : true,
            "path" : "/usr/local/var/log/mongodb/mongo.log"
        }
    },
    "ok" : 1
}

2 个答案:

答案 0 :(得分:4)

注释

  1. 路径必须存在。它不会自动创建。
  2. /Volumes是一种用于挂载驱动器和捆绑包的保留目录,不应直接使用。
  3. 如果您使用卷或(稀疏)捆绑包,则需要确保它在启动时挂载,或者您必须在启动MongoDB之前手动执行此操作。
  4. 基本上,有两个地方可以将MongoDB数据放在OS X中。遗憾的是,brew和MacPorts都不遵守文件层次标准*,这也是OS X的基础BSD采用。

    解决方案1:您希望所有OS X用户都可以访问数据

    由于mongod是从/usr/local子树运行的,所以这是我们的父。但由于变量数据属于/var,我们需要在那里使用本地树。所以我们的数据基本路径是/var/local/lib。它是mongoldb数据,因此您可以将其放入mongo(因为包基本名称)或mongodb(因为供应商名称)或甚至mongod(因为守护程序名称) )。这基本上是一种品味问题,但我会坚持使用供应商。所以你的dbpath是/var/local/lib/mongodb

    解决方案2:只有您才能访问数据

    将数据放入您的主目录。

    嗯,基本上你可以在那里做你想做的事情,但总的来说我将数据放入一个隐藏的目录(以点为前缀),这样就不会弄乱你的Finder。像$HOME/.mongodb

    这样的东西

    此解决方案并非真正干净,因为软件将从公共子树运行,数据存储在用户目录中。

    对两种解决方案的扩展

    如果要将数据放入卷或(稀疏)包中,只需从正确的位置创建符号链接到卷,只需创建符号链接而不是创建目录。解决方案1的示例:

    sudo ln -s /Volumes/YourVolume /var/local/lib/mongodb
    

    * 嗯,这是争辩说,由于MacPorts安装在/ opt下,它在技术上确实如此(尽管imho它首先宁可属于/ usr / local)

答案 1 :(得分:3)

AFAIK,mongod需要在工作前配置。有两种方法可以指定配置。

  1. 通过命令行参数。这是您添加的--dbpath参数。例如:

    mongod --dbpath /Volumes/Data/mongodb
    
  2. 通过指定配置文件。通常,如果您从源代码安装,则在/etc/mongod.conf中附带一个(具体取决于不同的Linux发行版)。您可以在其中指定其中的所有参数。
  3.   

    我希望它默认工作

    我认为你的意思是你想在系统重启时启动守护进程。因此,您实际使用的配置文件是在守护程序脚本中指定的。例如,在CentOS中,您可以在/etc/init.d/mongod中找到守护程序脚本,其中的行

    CONFIGFILE="/etc/mongod.conf"
    

    决定您使用的配置文件。因此,您可能希望找到您的守护程序脚本并首先进行检查。

    如果这不是您的情况,也许您刚刚从某个地方下载了mongodb并将其解压缩到您的系统中,并且您只需启动mongodb:

    mongod
    

    这样我想mongod.conf的默认位置是由编译参数决定的。这意味着如果您想要更改它,您必须下载源代码并自行编译。