sql >> データベース >  >> NoSQL >> MongoDB

再起動後にMongoDockerのセットアップが壊れています(ラズベリーパイのunifiコントローラー)

    シャットダウン中にディスクが汚れた状態でマウント解除されたため、データファイルが破損しています。データベースを復元しても、データベース内のキーの不整合が原因で問題が発生する可能性があります。以下は、この問題に適切に対処する手順です

    突然の障害からのMongoDBの回復

    1. データベースファイルがホスト上にある場合は、この手順を開始する前にそれらのコピーを作成してください。それらをコピーするには、

      を使用できます。
      docker cp <container_name>:<location of files in container> <location on host>
      

      データベースファイルがまだコンテナ内にある場合は、コンテナの外部に移動してコピーを作成します

    2. 次のように、ファイルに対して修復コンテナを開始します。

      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
      
    3. ファイルが修復されたら、データベース上でコンテナを起動し、ファイルをエクスポートする必要があります

      docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
      
    4. プロジェクトのクリーンなデータベースを開始し、mongorestoreを使用します 新しいデータベースにデータをインポートします。

    詳細については、次のリンクを確認してください。



    1. Nodejsの構成の最大旧スペースサイズ

    2. Javaオブジェクトに変換し直す際のMongoDBNumberLong/$numberLongの問題

    3. 認識されない式'$first'

    4. Mongoexport-qISODateクエリ