我的主机带有一个 mongodb 实例,并且没有 /db 目录,所以现在我想知道我能做些什么来找出数据实际存储在哪里。
/data/db
(如果没有使用配置文件)或可通过 db.adminCommand("getCmdLineOpts").parsed.dbpath
发现。
db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
admin
数据库或使用 adminCommand
: db.serverCmdLineOpts().parsed.storage.dbPath
(MongoDB 2.6+)。
mongod
将数据库位置默认为 /data/db/
。
如果您运行 ps -xa | grep mongod
并且您没有看到明确告诉 mongod
查看数据库位置的参数的 --dbpath
,并且您的 mongodb.conf
中没有 dbpath
,那么默认位置将是:/data/db/
,您应该看看那里。
你的配置文件说什么?
$ 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,但它位于数据目录中 - 我们正在寻找...
$ grep dbPath /etc/mongod.conf
如果您可以连接到服务器,我发现 db.serverCmdLineOpts()
是查找实际路径的最可靠方法。 “parsed.storage.dbPath”包含您的服务器当前使用的路径,并且在从配置或命令行参数中获取时都可用。
同样在我的情况下,确保配置值反映实际值(即配置在上次重新启动后没有更改)也很重要,此处提供的解决方案不能保证这一点。
db.serverCmdLineOpts()
示例输出:
{
"argv" : [
// --
],
"parsed" : {
"config" : "/your-config",
"storage" : {
"dbPath" : "/your/actual/db/path",
// --
}
},
"ok" : 1.0
}
在较新版本的 mongodb v2.6.4 中尝试:
grep dbpath /etc/mongod.conf
它会给你这样的东西:
dbpath=/var/lib/mongodb
这就是它存储数据的地方。
du -sh * | sort -hr
虽然此问题询问有关 Mongo 的 Linux/Unix 实例,但无论使用何种操作系统,它都是第一批搜索结果之一,因此对于发现此问题的未来 Windows 用户:
如果 MongoDB 以默认方式设置为 Windows 服务,您通常可以通过查看 MongoDB 服务属性中的“可执行文件路径”条目来找到它:
https://i.stack.imgur.com/HMrRu.png
根据我的经验,默认位置是 /var/lib/mongodb
sudo apt-get install -y mongodb-org
实际上,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
,您将不得不使用自己的初始化脚本并禁用内置脚本。
dbPath
与预安装的 mongod.cfg
配置文件中的 dbPath 不同。很多人都认不出来。
我在 OSX 系统 /usr/local/var/mongodb 上找到了我的
对于 Windows 进入 MongoDB\Server\4.0\bin 文件夹并在任何文本编辑器中打开 mongod.cfg 文件。然后找到指定 dbPath 参数的行。这条线看起来很相似
dbPath:D:\Program Files\MongoDB\Server\4.0\data
只是在 /var/db
中四处寻找它。不过感谢您的帮助——我相信这些答案适用于其他系统(例如 Ubuntu)并且会帮助其他人!
如果您能以某种方式找到 mongod.log 并对其进行 grep
grep dbpath mongod.log
dbpath 的值是 mongodb 的数据位置!!一切顺利 :)
在 MongoDB 4.4+ 和 CentOS 8 上,我通过运行找到了路径:
grep dbPath /etc/mongod.conf
当你启动它时,它会显示给你。但我不知道这是否是您可以在主机上执行的操作。如果您可以访问命令行并且可以重新启动服务,您将获得如下信息:
2016-11-15T12:57:09.182-0500 I CONTROL [initandlisten]
MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\
不定期副业成功案例分享
/etc/mongod.conf
/usr/bin/mongod -f /etc/mongod.conf
。从配置中获取 dbpatch。/usr/local/etc/mongod.conf
(配置文件)和/usr/local/var/mongodb
(数据库位置)。在某些系统上,这些将是默认值。db.serverCmdLineOpts()