0

壊れたドキュメントでデータベースを復元するのに問題があります。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

4

1 に答える 1

1

そもそも破損したデータベースをバックアップしたようです。--noobjcheck オプションを指定して mongorestore を実行してみてください。
お役に立てれば。

于 2014-11-22T19:15:28.063 に答える