我有问题用破损的文档恢复我们的数据库。当被破坏的文档出现时,mongorestore会停止恢复。这是错误。
INVALID OBJECT - going to try and print out
size: 2760
error: bson length doesn't match what we found in object with _id: 2
2014-11-21T12:29:48.717+0900 Assertion: 10330:Element extends past end of object
2014-11-21T12:29:48.740+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x730af3
2014-11-21T12:29:48.741+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x6db6bc
2014-11-21T12:29:48.741+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x6c86db
2014-11-21T12:29:48.745+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x4280
2014-11-21T12:29:48.749+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x6c1382
2014-11-21T12:29:48.755+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xafd52b
2014-11-21T12:29:48.758+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xaff663
2014-11-21T12:29:48.762+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xafe97b
2014-11-21T12:29:48.765+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xafe97b
2014-11-21T12:29:48.772+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xb01584
2014-11-21T12:29:48.777+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x6c1b03
2014-11-21T12:29:48.780+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0x6c1beb
2014-11-21T12:29:48.784+0900 mongorestore.exe mongo::parseNumberFromStringWithBase<unsigned char>+0xb364e3
2014-11-21T12:29:48.792+0900 kernel32.dll BaseThreadInitThunk+0xd
2014-11-21T12:29:48.795+0900
object up to error: { HERE IS BROKEN DOCUMENT
assertion: 10330 Element extends past end of object实际上,在备份之前也发生了相同的错误。文档被破坏的原因仍然不得而知(猜猜它可能是意外的关闭)。未使用副本集,因此启用了服务器和日志记录。检索损坏文档的.find()命令始终失败。损坏的文档也由.valid()命令标识。但是mongodb无法用db.repairDatabase()和mongod --repair恢复它。我的临时措施是使用mongodump备份数据,然后使用.remove()命令删除破损的文档。
现在的问题是如何从备份恢复完整的数据库,以及如何正确地修复它。有任何方法来恢复数据库(或不使用)已损坏的文档?
MongoDB版本: 2.6.1
发布于 2014-11-22 19:15:28
听起来好像你备份了一个一开始就损坏的数据库。尝试使用--noobjcheck选项运行mongorestore。
希望这能有所帮助。
https://stackoverflow.com/questions/27055249
复制相似问题