我的主机附带了一个mongodb实例,并且没有/ db目录,所以现在我想知道如何才能找出实际存储数据的位置。
db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
我的主机附带了一个mongodb实例,并且没有/ db目录,所以现在我想知道如何才能找出实际存储数据的位置。
db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
Answers:
mongod
将数据库位置默认为/data/db/
。
如果你运行ps -xa | grep mongod
,你看不到--dbpath
它明确告诉mongod
看看该参数为DB的位置和你没有dbpath
在你的mongodb.conf
,那么默认位置是:/data/db/
你应该看看那里。
/etc/mongod.conf
/usr/bin/mongod -f /etc/mongod.conf
。从配置中获取了dbpatch。
/usr/local/etc/mongod.conf
(配置文件)和/usr/local/var/mongodb
(数据库位置)。在某些系统上,这些将是默认值。
您的配置文件说什么?
$ grep dbpath /etc/mongodb.conf
如果不正确,请尝试此操作,您的数据库文件将出现在列表中:
$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG
这是/var/lib/mongodb/*
我的默认安装(Ubuntu 11.04)。
请注意,为了方便起见,还有一个/var/lib/mongodb/mongod.lock
保存mongod
PID 的文件,但是它位于数据目录中-我们正在寻找...
$ grep dbPath /etc/mongod.conf
在较新版本的mongodb v2.6.4中,尝试:
grep dbpath /etc/mongod.conf
它会给你这样的东西:
dbpath=/var/lib/mongodb
这就是它存储数据的地方。
我发现 db.serverCmdLineOpts()
如果可以连接到服务器,最健壮的方法来查找实际路径。“ parsed.storage.dbPath”包含服务器当前正在使用的路径,并且从配置或命令行参数中获取时均可用。
同样在我的情况下,重要的是要确保config值反映实际值(即config在上次重启后没有更改),此处提供的解决方案不能保证这一点。
db.serverCmdLineOpts()
输出示例:
{
"argv" : [
// --
],
"parsed" : {
"config" : "/your-config",
"storage" : {
"dbPath" : "/your/actual/db/path",
// --
}
},
"ok" : 1.0
}
尽管此问题针对的是Mongo的Linux / Unix实例,但无论使用什么操作系统,它都是最早的搜索结果之一,因此对于将来的Windows用户而言,可以找到以下内容:
如果以默认方式将MongoDB设置为Windows服务,通常可以通过查看MongoDB服务的“属性”中的“可执行文件的路径”条目来找到它:
根据我的经验,默认位置是/var/lib/mongodb
在我之后
sudo apt-get install -y mongodb-org
对于Windows,请进入MongoDB \ Server \ 4.0 \ bin文件夹,然后在任何文本编辑器中打开mongod.cfg文件。然后找到指定dbPath参数的行。这条线看起来很像
dbPath:D:\ Program Files \ MongoDB \ Server \ 4.0 \ data
实际上,mongod实例存储其数据的默认目录是
/data/db
在Linux和OS X上,
\data\db
在Windows上
如果您使用软件包管理系统安装了MongoDB,请检查/etc/mongod.conf
软件包提供的文件以查看指定的目录。
该storage.dbPath
设置仅适用于mongod
。
Linux软件包的初始化脚本不希望storage.dbPath
更改默认值。如果您使用Linux软件包并进行更改storage.dbPath
,则必须使用自己的初始化脚本并禁用内置脚本。
/data/db
(如果未使用配置文件)或可通过找到db.adminCommand("getCmdLineOpts").parsed.dbpath
。