我使用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
}
答案 0 :(得分:4)
/Volumes
是一种用于挂载驱动器和捆绑包的保留目录,不应直接使用。基本上,有两个地方可以将MongoDB数据放在OS X中。遗憾的是,brew和MacPorts都不遵守文件层次标准*,这也是OS X的基础BSD采用。
由于mongod是从/usr/local
子树运行的,所以这是我们的父。但由于变量数据属于/var
,我们需要在那里使用本地树。所以我们的数据基本路径是/var/local/lib
。它是mongoldb数据,因此您可以将其放入mongo
(因为包基本名称)或mongodb
(因为供应商名称)或甚至mongod
(因为守护程序名称) )。这基本上是一种品味问题,但我会坚持使用供应商。所以你的dbpath是/var/local/lib/mongodb
。
将数据放入您的主目录。
嗯,基本上你可以在那里做你想做的事情,但总的来说我将数据放入一个隐藏的目录(以点为前缀),这样就不会弄乱你的Finder。像$HOME/.mongodb
此解决方案并非真正干净,因为软件将从公共子树运行,数据存储在用户目录中。
如果要将数据放入卷或(稀疏)包中,只需从正确的位置创建符号链接到卷,只需创建符号链接而不是创建目录。解决方案1的示例:
sudo ln -s /Volumes/YourVolume /var/local/lib/mongodb
* 嗯,这是争辩说,由于MacPorts安装在/ opt下,它在技术上确实如此(尽管imho它首先宁可属于/ usr / local)
答案 1 :(得分:3)
AFAIK,mongod需要在工作前配置。有两种方法可以指定配置。
通过命令行参数。这是您添加的--dbpath参数。例如:
mongod --dbpath /Volumes/Data/mongodb
说
我希望它默认工作
我认为你的意思是你想在系统重启时启动守护进程。因此,您实际使用的配置文件是在守护程序脚本中指定的。例如,在CentOS中,您可以在/etc/init.d/mongod
中找到守护程序脚本,其中的行
CONFIGFILE="/etc/mongod.conf"
决定您使用的配置文件。因此,您可能希望找到您的守护程序脚本并首先进行检查。
如果这不是您的情况,也许您刚刚从某个地方下载了mongodb并将其解压缩到您的系统中,并且您只需启动mongodb:
mongod
这样我想mongod.conf的默认位置是由编译参数决定的。这意味着如果您想要更改它,您必须下载源代码并自行编译。