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


160

我的主机附带了一个mongodb实例,并且没有/ db目录,所以现在我想知道如何才能找出实际存储数据的位置。


7
关于这个问题,最近有一个更好的答案:“ mongodb的默认数据库路径是什么?” 。数据路径将是默认路径/data/db(如果未使用配置文件)或可通过找到db.adminCommand("getCmdLineOpts").parsed.dbpath
Stennie 2014年

6
在OSX,mongo 3.0.4上,我不得不使用“ db.adminCommand(” getCmdLineOpts“)。parsed.storage.dbPath”
ski_squaw 2015年

@Stennie您的评论让我(我在Windows上,所以我使用Robomongo),但你的问题链接点,这个问题,而不是在你的预定目标- stackoverflow.com/a/12738557/112764 -在3.x,实际上是db.adminCommand("getCmdLineOpts").parsed.storage.dbpath
NateJ,

5
@NateJ谢谢!相关问题答案提供了 MongoDB 2.6+和<= 2.4的较旧形式的示例。您还可以使用Shell助手来代替记住admin数据库或使用adminCommanddb.serverCmdLineOpts().parsed.storage.dbPath(MongoDB 2.6+)。
Stennie

Answers:


140

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

如果你运行ps -xa | grep mongod,你看不到--dbpath它明确告诉mongod看看该参数为DB的位置和你没有dbpath在你的mongodb.conf,那么默认位置是:/data/db/你应该看看那里。


11
没有这样的目录
user2384994 2013年

18
@ user2384994地雷位于/etc/mongod.conf
K-SO的毒性正在增加。

1
没有看到路径,但是/usr/bin/mongod -f /etc/mongod.conf。从配置中获取了dbpatch。
Putnik

6
还要检查/usr/local/etc/mongod.conf(配置文件)和/usr/local/var/mongodb(数据库位置)。在某些系统上,这些将是默认值。
Miles Erickson'8

嗯,这应该精确地打印当前路径为所有的MongoDB版本stackoverflow.com/a/52036070/248616
南摹VU

57

您的配置文件说什么?

$ 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保存mongodPID 的文件,但是它位于数据目录中-我们正在寻找...


此服务器上没有/ var / lib目录,并且这两个命令不起作用(第一个命令找不到/etc/mongodb.conf,第二个命令无法识别lsof)
Zugwalt 2011年

也许您应该为主机添加信息。好像不是Ubuntu发行版。
DrColossos

4
在Ubuntu 16.04的MongoDB v3.4.10,它是$ grep dbPath /etc/mongod.conf
伊赫桑

31

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

grep dbpath /etc/mongod.conf

它会给你这样的东西:

dbpath=/var/lib/mongodb

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


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

25

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

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

db.serverCmdLineOpts()

输出示例:

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

3
这是最好的答案
过度转向

我也是最好的答案
Nam G VU

21

尽管此问题针对的是Mongo的Linux / Unix实例,但无论使用什么操作系统,它都是最早的搜索结果之一,因此对于将来的Windows用户而言,可以找到以下内容:

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

属性窗口显示“可执行路径”选项


并不是很明显,但问题是针对* nix os
st78,2017年

3
@ st78我知道,但这仍然是在Windows中搜索位置时Google的首批搜索结果之一,这就是为什么我为像我这样偶然发现该问题的人留下一个回答Windows路径的答案(一旦我弄清楚了)。
Robotnik



4

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

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


2

只是通过拨入来发现它/var/db。不过,感谢您的帮助-我确信这些答案适用于其他系统(例如Ubuntu),并且会对其他人有所帮助!


2

如果可以找到mongod.log并对其进行grep

grep dbpath mongod.log

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


2

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

/data/db 在Linux和OS X上,

\data\db 在Windows上

如果您使用软件包管理系统安装了MongoDB,请检查/etc/mongod.conf软件包提供的文件以查看指定的目录。

storage.dbPath设置仅适用于mongod

Linux软件包的初始化脚本不希望storage.dbPath更改默认值。如果您使用Linux软件包并进行更改storage.dbPath,则必须使用自己的初始化脚本并禁用内置脚本。


1

启动时,它会向您显示。但是我不知道您是否可以在主机上执行此操作。如果您可以访问命令行并可以重新启动服务,则将获得类似以下内容的信息:

    2016-11-15T12:57:09.182-0500 I CONTROL  [initandlisten]
 MongoDB starting : pid=16448 port=27017 dbpath=C:\data\db\ 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.