【问题标题】:Which is my database in mongodb?我在 mongodb 中的数据库是哪个?
【发布时间】:2014-03-13 05:49:51
【问题描述】:

下一个问题参考上一个问题Where does mongodb store databse in 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

【问题讨论】:

  • 这是全新安装。除了供内部使用的“本地”之外,没有其他数据库。你好像在学习。你的问题会更适合这里:superuser.com
  • 你的数据库路径设置了吗??你安装MongoDB服务了吗???
  • @Hardik:我不确定如何设置数据库路径。而且我不直接对 mongod 做任何事情。即使我不需要那个。这次我只需要转储我的数据库。我使用erlang and chicagoboss。它会自动执行所有数据库事务,如创建数据库、添加集合、插入、更新、删除数据等。
  • 一开始就告诉你。您的问题对于本论坛来说是“题外话”。这个论坛是针对“编程”问题的。您还被告知没有数据库。而且您显然没有插入任何数据。在superuser.com 上向您提问。更好的是,阅读手册:docs.mongodb.org/manual
  • @NeilLunn:我从来没有说过我的数据库是空的。而且我有很多数据,所以我想在截断之前转储。我会在 superuser.com 上问我的问题。谢谢

标签: mongodb dump mongodump


【解决方案1】:

这个命令对你有用 如果您的 dbpath 已设置或您的 mongoDB 服务正在运行 这里 ihtx 表示你的 dbname

$ mongodump -d ihtx --out /home/user/Desktop/intxDB

【讨论】:

  • @LaxmikantGurnalkar 从第一条评论开始。这里没有没有数据库。都是空的。
  • @NeilLunn:我可以看到文件名“ihtx”,这是我的数据库名称。我可以在 mongo shell db 中看到我的数据。 mongo下可以看到三个集合:> show collections; ancestors inheritance_tax_forms inheritance_tax
  • @LaxmikantGurnalkar 如何使用 MongoDB 服务?你设置环境变量了吗??你的MongoDB服务正在运行吗?您可以在您的 mongo-shell 中访问您的 mongoDB 吗??
  • @Hardik:不,我正在从终端运行以上命令。不是来自 mongo shell。我应该这样做吗?
  • 不,我想知道你可以连接你的 MongoDB 吗??
【解决方案2】:

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

【讨论】:

  • :谢谢,--repairThu Mar 13 12:29:32.759 [initandlisten] exception in initAndListen: 10296 ********************************************************************* ERROR: dbpath (/data/db/) does not exist. Create this directory or give existing directory in --dbpath. See http://dochub.mongodb.org/core/startingandstoppingmongo ********************************************************************* , terminating 出现错误
  • 更新了答案。由于您使用 /var/lib/mongodb 作为 dbpath,因此 sp 将该值放入您的命令中。请检查更新的答案
【解决方案3】:

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

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

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

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

【讨论】:

  • 感谢MongoDB names summarisation。但即使删除 --dbpath 也不起作用。我在我的本地机器上而不是在服务器上这样做。即使我尝试过:$sudo service mongodb stop $ mongodump --dbpath /var/lib/mongodb -d ihtx --out 但发生了同样的错误
猜你喜欢
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 2013-02-28
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
相关资源
最近更新 更多