2014-12-23 82 views
4

我上次Meteor升级后,我的数据库被损坏。首先,它开始与此错误消息,当我试图创建一个新用户(我们使用流星账户):mongodb错误:“getFile():坏文件编号值(损坏的数据库?):运行修复”

getFile(): bad file number value (corrupt db?): run repair 

然后我说我应该运行db.repairDatabase()但另一个问题看到,虽然蒙戈贝壳说,该数据库现在好了,它并没有真正的工作。上面的错误信息仍然显示。

因此,我读了一些关于损坏的索引,并删除了users集合中的索引,这显然使情况更糟。现在我有两个用户使用相同的电子邮件地址和流星不能再启动:当我尝试删除这些用户的一个

MongoError: E11000 duplicate key error index: meteor.users.$emails.address_1 dup key: { : "[email protected]" } 

,原有的错误再次显示出来:

meteor:PRIMARY> db.users.remove({ _id: "cAtu2XsEXTbqL2Wvx"}) 
getFile(): bad file number value (corrupt db?): run repair` 

幸运我们仍处于开发阶段,我们可以放弃整个数据库并重新开始,但这让我对在生产环境中运行Meteor感到非常不安。有没有办法在这种状态下修复数据库?

+0

这可能与流星升级无关。回想起来,昨天晚上我注意到我的机器过热,WindowServer进程使用大约80%的CPU,所以我强制在Meteor运行时退出它。这可能会破坏数据库。问题依然存在:有没有办法在这种状态下修复数据库? –

回答

2

您可以运行db.repairDatabase来尝试修复数据文件 - 但首先阅读链接的页面以获取详细信息和警告。如果你之前没有使用日志,那么确保你使用日志运行,至少对于生产来说,运行一个副本集。通常,在这种情况下,最好再与其他副本集成员重新同步或恢复备份而不是修复。您可以从MongoDB手册中找到有关数据恢复的更多信息this article