壊れたドキュメントでデータベースを復元するのに問題があります。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()
andでそれを回復できませんでしたmongod --repair
。私の一時的な対策は、を使用してデータをバックアップし、コマンドmongodump
を使用して壊れたドキュメントを削除しました。.remove()
問題は、バックアップから完全なデータベースを復元する方法と、それを適切に修復する方法です。壊れたドキュメントがある (またはない) データベースを復元する方法はありますか?
MongoDB バージョン: 2.6.1