我怎样才能知道 mongoDB 在哪里存储数据? (它不在默认的/data/db 中!)

我的主机有一个 mongodb 实例,没有/db 目录,所以现在我想知道我能做些什么来找出数据实际存储在哪里。

244814 次浏览

您的配置文件说什么?

$ 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 为方便,但它位于数据目录-我们正在寻找..。

mongod将数据库位置默认设置为 /data/db/

如果你运行 ps -xa | grep mongod,你没有看到一个 --dbpath,它明确地告诉 mongod去查看那个参数的 db 位置,而你的 mongodb.conf中没有一个 dbpath,那么默认的位置将是: /data/db/,你应该查看那里。

/var/db里随便翻翻就找到了。谢谢你的帮助——我相信这些答案适用于其他系统(比如 Ubuntu) ,并且会帮助其他系统!

在新版本的 mongodb v2.6.4中,请尝试:

grep dbpath /etc/mongod.conf

它会给你这样的东西:

dbpath=/var/lib/mongodb

这就是它存储数据的地方。

根据我的经验,默认的位置是 /var/lib/mongodb之后,我这样做

sudo apt-get install -y mongodb-org
我在一个 OSX 系统上找到了我的 /usr/local/var/mongodb

虽然这个问题询问的是 Linux/Unix 的 Mongo 实例,但不管使用什么操作系统,这都是首批搜索结果之一,因此对于未来的 Windows 用户来说,他们会发现:

如果 MongoDB 是以默认方式设置为 Windows 服务的,那么通常可以通过在 MongoDB 服务的属性中查看“可执行文件路径”条目来找到它:

Properties Window showing 'Path to Executable' option

当你启动它的时候,它会告诉你。但我不知道你能不能在你的主人身上做到。如果您可以访问命令行并重新启动服务,您将得到类似于:

    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,

Windows 上的 \data\db

要检查相同的,您可以在 Mongodb 配置文件中查找 DbPath设置。

    在 Linux 上,如果您使用了软件包管理器来安装 MongoDB,那么位置是 /etc/mongod.conf。 运行以下命令检查指定的目录:
    grep dbpath /etc/mongodb.conf
    
  • 在 Windows 上,位置是 <install directory>/bin/mongod.cfg.Open MonGod file 并检查 DbPath选项。
  • 在 macOS 上,从 MongoDB 的官方自制水龙头安装时的位置是 /usr/local/etc/mongod.conf

安装包管理器时包含的默认 MonGod.conf配置文件对 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
Dbpath 的值是 mongodb 的数据位置! ! 祝你一切顺利

我发现,如果您能够连接到服务器,那么 db.serverCmdLineOpts()是查找实际路径的最健壮的方法。“ parsed.storage.dbPath”包含服务器当前使用的路径,当从配置或命令行参数获取该路径时,它可用。

在我的案例中,确保 config 值反映了实际值(即,config 在上次重启后没有改变)也很重要,这里提供的解决方案没有保证。

db.serverCmdLineOpts()

输出示例:

{
"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