ChatGPT解决这个技术问题 Extra ChatGPT

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

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

对此有一个更新的问题有更好的答案:"What is the default database path for mongodb?"。数据路径将是默认的 /data/db(如果没有使用配置文件)或可通过 db.adminCommand("getCmdLineOpts").parsed.dbpath 发现。
在 OSX,mongo 3.0.4 上,我不得不使用“db.adminCommand("getCmdLineOpts").parsed.storage.dbPath"
@Stennie 你的评论帮助了我(我在 Windows 上,所以我使用 Robomongo),但你的问题链接指向这个问题,而不是你的预期目标 - stackoverflow.com/a/12738557/112764 - 而在 3.x 中,它实际上是db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
@NateJ 谢谢! answer on the related question 包含 MongoDB 2.6+ 的示例以及 <= 2.4 中的旧形式。您还可以使用一个 shell 帮助程序,而不是记住更改为 admin 数据库或使用 adminCommand: db.serverCmdLineOpts().parsed.storage.dbPath (MongoDB 2.6+)。

e
erip

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

如果您运行 ps -xa | grep mongod 并且您没有看到明确告诉 mongod 查看数据库位置的参数的 --dbpath,并且您的 mongodb.conf 中没有 dbpath,那么默认位置将是:/data/db/,您应该看看那里。


@user2384994 我的位于 /etc/mongod.conf
没有看到路径,但是 /usr/bin/mongod -f /etc/mongod.conf。从配置中获取 dbpatch。
还要检查 /usr/local/etc/mongod.conf(配置文件)和 /usr/local/var/mongodb(数据库位置)。在某些系统上,这些将是默认值。
那么这个应该为所有 mongodb 版本 stackoverflow.com/a/52036070/248616 精确打印当前路径
db.serverCmdLineOpts()
T
Tomasz Nurkiewicz

你的配置文件说什么?

$ grep dbpath /etc/mongodb.conf

如果不正确,试试这个,你的数据库文件将出现在列表中:

$ sudo lsof -p `ps aux | grep mongodb | head -n1 | tr -s ' ' | cut -d' ' -f 2` | grep REG

在我的默认安装 (Ubuntu 11.04) 上是 /var/lib/mongodb/*

请注意,为方便起见,还有一个 /var/lib/mongodb/mongod.lock 文件包含 mongod PID,但它位于数据目录中 - 我们正在寻找...


此服务器上没有 /var/lib 目录,这两个命令不起作用(第一个找不到 /etc/mongodb.conf 第二个无法识别 lsof)
也许您应该为您的主机添加信息。似乎不是像 Ubuntu 这样的发行版。
在 Ubuntu 16.04 mongodb v3.4.10 上,它是 $ grep dbPath /etc/mongod.conf
g
glock18

如果您可以连接到服务器,我发现 db.serverCmdLineOpts() 是查找实际路径的最可靠方法。 “parsed.storage.dbPath”包含您的服务器当前使用的路径,并且在从配置或命令行参数中获取时都可用。

同样在我的情况下,确保配置值反映实际值(即配置在上次重新启动后没有更改)也很重要,此处提供的解决方案不能保证这一点。

db.serverCmdLineOpts()

示例输出:

{
    "argv" : [ 
        // --
    ],
    "parsed" : {
        "config" : "/your-config",
        "storage" : {
            "dbPath" : "/your/actual/db/path",
            // --
        }
    },
    "ok" : 1.0
}

这看起来很棒,但是有没有办法在 mongocxx 上做到这一点?
@Dariusz,据我了解,它只是一个 C++ 驱动程序。您是否无法通过其本机客户端直接连接到 mongo?
T
Tim Truston

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

grep dbpath /etc/mongod.conf

它会给你这样的东西:

dbpath=/var/lib/mongodb

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


我的也在这里。对于想要查找此目录以检查文件大小的人:du -sh * | sort -hr
R
Robotnik

虽然此问题询问有关 Mongo 的 Linux/Unix 实例,但无论使用何种操作系统,它都是第一批搜索结果之一,因此对于发现此问题的未来 Windows 用户:

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

https://i.stack.imgur.com/HMrRu.png


这不是很明显,但问题是针对 *nix os
@st78 我知道,但它仍然是在 Windows 中搜索位置时的第一个 Google 结果之一,这就是为什么我为像我这样偶然发现它的人留下了一个解决 Windows 路径的答案(一旦我弄清楚了)。
l
lrineau

根据我的经验,默认位置是 /var/lib/mongodb

sudo apt-get install -y mongodb-org

我可以为 Linux Mint 17.3 用户确认这一点。
P
Prashant Pokhriyal

实际上,mongod 实例存储其数据的默认目录是

/data/db 在 Linux 和 OS X 上,

\data\db 在 Windows 上

要进行检查,您可以在 mongodb configuration file 中查找 dbPath 设置。

在 Linux 上,该位置是 /etc/mongod.conf,如果您使用包管理器安装 MongoDB。运行以下命令检查指定目录: grep dbpath /etc/mongodb.conf

在 Windows 上,位置是 <安装目录>/bin/mongod.cfg。打开 mongod.cfg 文件并检查 dbPath 选项。

在 macOS 上,从 MongoDB 的官方 Homebrew tap 安装时,位置是 /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 软件包初始化脚本不希望 storage.dbPath 更改默认值。如果您使用 Linux 软件包并更改 storage.dbPath,您将不得不使用自己的初始化脚本并禁用内置脚本。

Source


其实这应该是最佳答案!默认的 dbPath 与预安装的 mongod.cfg 配置文件中的 dbPath 不同。很多人都认不出来。
A
Achim Koellner

我在 OSX 系统 /usr/local/var/mongodb 上找到了我的


这对于 Homebrew 用户来说是正确的
问题是“我怎样才能找到” mongodb 数据存储位置。不仅仅是特定用户或平台的路径。
D
Dibyendu Mitra Roy

对于 Windows 进入 MongoDB\Server\4.0\bin 文件夹并在任何文本编辑器中打开 mongod.cfg 文件。然后找到指定 dbPath 参数的行。这条线看起来很相似

dbPath:D:\Program Files\MongoDB\Server\4.0\data


A
Aaron Silverman

只是在 /var/db 中四处寻找它。不过感谢您的帮助——我相信这些答案适用于其他系统(例如 Ubuntu)并且会帮助其他人!


N
Nilotpal

如果您能以某种方式找到 mongod.log 并对其进行 grep

grep dbpath mongod.log

dbpath 的值是 mongodb 的数据位置!!一切顺利 :)


j
jjj

在 MongoDB 4.4+ 和 CentOS 8 上,我通过运行找到了路径:

grep dbPath /etc/mongod.conf

j
johnny

当你启动它时,它会显示给你。但我不知道这是否是您可以在主机上执行的操作。如果您可以访问命令行并且可以重新启动服务,您将获得如下信息:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\