tun*_*nuz 14 ubuntu database mongodb
我在 Ubuntu 12.10 上安装了 MongoDB 2.0.4。最近我在从外部连接到数据库时遇到了一些问题,并发现有一些东西阻止了 MongoDB 正确启动。正如几个来源(参见 StackOverflow)所建议的那样,我删除/var/lib/mongodb/mongodb.lock并运行了mongod --repair. 这并没有解决问题,MongoDB 不会运行并不断创建锁定文件,之后它不会注意删除这些文件。通过查看日志,我意识到它无法访问某个名为 的文件夹$tmpSomething,因此(因为名称暗示了一个临时文件夹)我将其删除,然后一切正常......除了我只有一个的事实我以前的数据库在视线中,而其他数据库还在那里,因为我的/var/lib/mongodb/文件夹仍然充满.ns .0 .1 .n重量很大的文件。有没有办法将它们恢复到数据库中?(我已经尝试过使用 mongorestore,但正如我所料,它不处理这些文件)。
谢谢
Ada*_*m C 19
该.ns .0 .1等文件中的数据文件本身。如果您mongod使用--dbpath指向该文件夹的参数启动了一个实例,或者如果您将内容移动到其他地方并使用选项指向那里,mongod 将尝试正常读取它们。
由于您的问题表明损坏和/或其他一些问题开始mongod(您应该真正发布启动消息日志文件,也许在一个单独的问题中解决该问题),那么还有其他选择。作为参考,最常见的问题是与权限相关的问题,尤其是当人们尝试手动(以他们自己的身份)或使用 sudo(以 root 身份)启动 mongod 并在各个目录中创建有问题的权限时。
您是正确的,mongorestore不能直接使用这些数据文件,但mongodump可以读取它们并将数据从它们转储到mongorestore预期的 BSON 文件中。
您想要的选项是dbpath。你提到你的路径是/var/lib/mongo,所以你可以运行这样的东西:
mongodump --dbpath /var/lib/mongo -d <database name> -o /path/to/put/files
Run Code Online (Sandbox Code Playgroud)
或者,您也可以--repair在此处使用来修复损坏以及极端情况下的查询选项,以绕过损坏的部分(很少,如果需要的话)。mongodump页面上描述了各种选项:
http://docs.mongodb.org/manual/reference/mongodump/
转储文件后,您可以使用mongorestore将它们重新导入到另一个mongod实例中。