0

参考上一个问题的下一个问题mongodb 在哪里存储数据库在 ubuntu 中?

$ cd /var/lib/mongodb/
$ ls
ihtx.0  ihtx.1  ihtx.ns  journal  local.0  local.ns  mongod.lock

在这里,我可以看到ihtx.0 ihtx.1 ihtx.ns三个同名文件。我通常在 mongo shell 中看到的 mydatabase 是哪一个?我应该倾倒哪一个?

尝试了每个,得到以下错误:

$ mongodump --dbpath /var/lib/mongodb/ihtx.XX --out /home/user/Desktop/

If you are running a mongod on the same path you should connect to that instead of direct data file access

Thu Mar 13 11:17:21.123 dbexit: 
Thu Mar 13 11:17:21.123 [tools] shutdown: going to close listening sockets...
Thu Mar 13 11:17:21.123 [tools] shutdown: going to flush diaglog...
Thu Mar 13 11:17:21.123 [tools] shutdown: going to close sockets...
Thu Mar 13 11:17:21.123 [tools] shutdown: waiting for fs preallocator...
Thu Mar 13 11:17:21.123 [tools] shutdown: closing all files...
Thu Mar 13 11:17:21.123 [tools] closeAllFiles() finished
Thu Mar 13 11:17:21.123 [tools] shutdown: removing fs lock...
Thu Mar 13 11:17:21.123 [tools] couldn't remove fs lock errno:9 Bad file descriptor
Thu Mar 13 11:17:21.123 dbexit: really exiting now
4

3 回答 3

5

如果您的 dbpath 已设置或您的 mongoDB 服务在此处运行,此命令将适用于您 ihtx 表示您的 dbname

$ mongodump -d ihtx --out /home/user/Desktop/intxDB
于 2014-03-13T06:01:13.887 回答
3

ihtx.0,ihtx.1,ihtx,ns 代表数据库ihtx

.0 .1 等文件是数据文件本身。MongoDB 将第一个数据文件命名为 .0,下一个 .1 等。mongod 分配的第一个文件是 64 兆字节,接下来是 128 兆字节,依此类推,最多 2 GB,此时所有后续文件都是 2 GB。

“.ns”文件是命名空间文件。每个集合和索引都算作一个命名空间。每个命名空间为 628 字节,.ns 文件默认为 16MB。

现在在您的问题中, mongod 实例无法删除 fs 锁(正如您在错误中看到的那样)。

Thu Mar 13 11:17:21.123 [tools] closeAllFiles() finished
Thu Mar 13 11:17:21.123 [tools] shutdown: removing fs lock...
Thu Mar 13 11:17:21.123 [tools] couldn't remove fs lock errno:9 Bad file descriptor
Thu Mar 13 11:17:21.123 dbexit: really exiting now 

与您的代码一样,dbpath/var/lib/mongodb,因此当您启动 mongo 实例时,请使用给定的 --dbpath 参数:

mongod --dbpath=/var/lib/mongodb

所以首先运行以下命令:

mongod --dbpath=/var/lib/mongodb --repair

之后运行以下:

mongodump --dbpath /var/lib/mongodb -d ihtx --out /home/user/Desktop/intxDB
于 2014-03-13T06:59:01.917 回答
2

对于您的第一个问题“我的数据库文件是什么?”,请参阅链接http://docs.mongodb.org/manual/faq/storage/

它清楚地提到,“MongoDB 将数据文件预分配到特定大小,部分是为了防止文件系统碎片。MongoDB 将第一个数据文件命名为 .0,下一个为 .1,等等。”

对于您在转储时遇到的错误,请删除 --dbpath 选项,然后尝试。

您可以从正在运行的服务器或文件(如果服务器未运行或锁定)导出,而不是两者都导出。

于 2014-03-13T06:29:00.073 回答