シャットダウン中にディスクが汚れた状態でマウント解除されたため、データファイルが破損しています。データベースを復元しても、データベース内のキーの不整合が原因で問題が発生する可能性があります。以下は、この問題に適切に対処する手順です
突然の障害からのMongoDBの回復
-
データベースファイルがホスト上にある場合は、この手順を開始する前にそれらのコピーを作成してください。それらをコピーするには、
を使用できます。docker cp <container_name>:<location of files in container> <location on host>
データベースファイルがまだコンテナ内にある場合は、コンテナの外部に移動してコピーを作成します
-
次のように、ファイルに対して修復コンテナを開始します。
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
イメージ名はプラットフォームによって異なります。RaspberryPI3の場合、名前は
andresvidal/rpi3-mongodb3
です。 、arm64v8またはamd64の場合、コンテナーはmongo
です。データファイルの作成に使用したものと同じバージョンのMongoDBイメージがあることを確認してください。
ファイルが修復できない場合は、次のことを試してください。
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
ファイルが修復されたら、データベース上でコンテナを起動し、ファイルをエクスポートする必要があります
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
プロジェクトのクリーンなデータベースを開始し、
mongorestore
を使用します 新しいデータベースにデータをインポートします。
詳細については、次のリンクを確認してください。