Meteorを最後にアップグレードした後、データベースが破損しました。最初に、新しいユーザーを作成しようとしたときにこのエラーメッセージが表示されました(meteor-accountsを使用しています)。
getFile(): bad file number value (corrupt db?): run repair
次に、別の質問で実行する必要があることを確認しましたdb.repairDatabase()
が、mongoシェルはデータベースに問題がないと言っていましたが、実際には機能しませんでした。上記のエラーメッセージはまだ表示されていました。
だから私は壊れたインデックスについて何かを読み、users
コレクションにインデックスを落としました、そしてこれは明らかにすべてを悪化させました。同じメールアドレスを持つ2人のユーザーがいて、Meteorが起動しなくなりました。
MongoError: E11000 duplicate key error index: meteor.users.$emails.address_1 dup key: { : "[email protected]" }
これらのユーザーの1人を削除しようとすると、元のエラーが再び表示されます。
meteor:PRIMARY> db.users.remove({ _id: "cAtu2XsEXTbqL2Wvx"})
getFile(): bad file number value (corrupt db?): run repair`
幸い、私たちはまだ開発段階にあり、データベース全体を削除して最初からやり直すことができますが、これにより、Meteorを本番環境で実行することについて本当に不安になりました。この状態でデータベースを修正する方法はありますか?
実行db.repairDatabase
してデータファイルの修復を試みることができますが、詳細と警告については、最初にリンクされたページをお読みください。以前にジャーナリングをオンにしていない場合は、ジャーナリングをオンにして実行し、少なくとも本番環境では、レプリカセットを実行してください。通常、この状況では、修復するよりも、別のレプリカセットメンバーから再同期するか、バックアップを復元することをお勧めします。データ復旧の詳細については、MongoDBマニュアルのこの記事を参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加