我在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,但正如我所料,它不处理这些文件).
谢谢
.ns .0 .1等文件是数据文件本身.如果您启动了一个mongod实例,其中–dbpath参数指向该文件夹,或者您将内容移动到其他位置并使用该选项指向那里,mongod将尝试正常读取它们.
原文链接:https://www.f2er.com/ubuntu/348800.html由于您的问题建议破坏和/或启动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
或者你可以在这里使用–repair来修复损坏以及在极端情况下的查询选项来绕过损坏的部分(很少,如果有的话,需要). mongodump页面上描述了各种选项:
http://docs.mongodb.org/manual/reference/mongodump/
一旦转出文件,就可以使用mongorestore将它们重新导入另一个mongod实例.