我的主机有一个 mongodb 实例,没有/db 目录,所以现在我想知道我能做些什么来找出数据实际存储在哪里。
您的配置文件说什么?
$ 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/*
请注意,还有一个 /var/lib/mongodb/mongod.lock文件持有 mongod PID 为方便,但它位于数据目录-我们正在寻找..。
/var/lib/mongodb/mongod.lock
mongod
mongod将数据库位置默认设置为 /data/db/。
/data/db/
如果你运行 ps -xa | grep mongod,你没有看到一个 --dbpath,它明确地告诉 mongod去查看那个参数的 db 位置,而你的 mongodb.conf中没有一个 dbpath,那么默认的位置将是: /data/db/,你应该查看那里。
ps -xa | grep mongod
--dbpath
mongodb.conf
dbpath
在 /var/db里随便翻翻就找到了。谢谢你的帮助——我相信这些答案适用于其他系统(比如 Ubuntu) ,并且会帮助其他系统!
/var/db
在新版本的 mongodb v2.6.4中,请尝试:
grep dbpath /etc/mongod.conf
它会给你这样的东西:
dbpath=/var/lib/mongodb
这就是它存储数据的地方。
根据我的经验,默认的位置是 /var/lib/mongodb之后,我这样做
/var/lib/mongodb
sudo apt-get install -y mongodb-org
虽然这个问题询问的是 Linux/Unix 的 Mongo 实例,但不管使用什么操作系统,这都是首批搜索结果之一,因此对于未来的 Windows 用户来说,他们会发现:
如果 MongoDB 是以默认方式设置为 Windows 服务的,那么通常可以通过在 MongoDB 服务的属性中查看“可执行文件路径”条目来找到它:
当你启动它的时候,它会告诉你。但我不知道你能不能在你的主人身上做到。如果您可以访问命令行并重新启动服务,您将得到类似于:
2016-11-15T12:57:09.182-0500 I CONTROL [initandlisten] MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\
实际上,monGod 实例存储其数据的默认目录是
Linux 和 OS X 上的 /data/db,
/data/db
Windows 上的 \data\db
\data\db
要检查相同的,您可以在 Mongodb 配置文件中查找 DbPath设置。
/etc/mongod.conf
grep dbpath /etc/mongodb.conf
<install directory>/bin/mongod.cfg
/usr/local/etc/mongod.conf
安装包管理器时包含的默认 MonGod.conf配置文件对 storage.dbPath使用以下特定于平台的默认值:
storage.dbPath
+--------------------------+-----------------+------------------------+ | Platform | Package Manager | Default storage.dbPath | +--------------------------+-----------------+------------------------+ | RHEL / CentOS and Amazon | yum | /var/lib/mongo | | SUSE | zypper | /var/lib/mongo | | Ubuntu and Debian | apt | /var/lib/mongodb | | macOS | brew | /usr/local/var/mongodb | +--------------------------+-----------------+------------------------+
配置文件中的 storage.dbPath设置仅适用于 mongod。
Linux 包 init 脚本并不期望从默认值改变 storage.dbPath。如果使用 Linux 包并更改 storage.dbPath,则必须使用自己的 init 脚本并禁用内置脚本。
< a href = “ https://docs.monGodb.com/Manual/reference/configuration-options”rel = “ norefrer”> Source
如果您能找到 mongod.log 并对其执行 grep 操作
grep dbpath mongod.log
我发现,如果您能够连接到服务器,那么 db.serverCmdLineOpts()是查找实际路径的最健壮的方法。“ parsed.storage.dbPath”包含服务器当前使用的路径,当从配置或命令行参数获取该路径时,它可用。
db.serverCmdLineOpts()
在我的案例中,确保 config 值反映了实际值(即,config 在上次重启后没有改变)也很重要,这里提供的解决方案没有保证。
输出示例:
{ "argv" : [ // -- ], "parsed" : { "config" : "/your-config", "storage" : { "dbPath" : "/your/actual/db/path", // -- } }, "ok" : 1.0 }
进入 MongoDB Server 4.0 bin 文件夹,在任何文本编辑器中打开 mongod.cfg 文件。然后找到指定 dbPath 参数的行。这条线看起来很相似
D: Program Files MongoDB Server 4.0 data dbPath: D: Program Files MongoDB Server 4.0 data
在 MongoDB 4.4 + 和 CentOS 8上,我通过运行:
grep dbPath /etc/mongod.conf