MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo-Docker-Setup nach Neustart defekt (Unifi-Controller auf Himbeer-Pi)

Sie haben eine Datendateibeschädigung durch das unsaubere Aufheben der Bereitstellung der Festplatte während des Herunterfahrens. Auch wenn Sie die Datenbank wiederherstellen, können aufgrund von Inkonsistenzen der Schlüssel in der Datenbank immer noch Probleme auftreten. Im Folgenden finden Sie ein Verfahren zur ordnungsgemäßen Behandlung dieser Probleme

Wiederherstellung von MongoDB nach einem plötzlichen Ausfall

  1. Wenn sich die Datenbankdateien auf Ihrem Host befinden, kopieren Sie sie, bevor Sie mit diesem Verfahren beginnen. Um sie zu kopieren, können Sie

    verwenden
    docker cp <container_name>:<location of files in container> <location on host>
    

    Wenn sich die Datenbankdateien noch im Container befinden, holen Sie sich die Dateien außerhalb des Containers und erstellen Sie eine Kopie

  2. Starten Sie einen Reparaturcontainer über die Dateien wie folgt:

    docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
    

    Der Image-Name hängt von der Plattform ab und für Raspberry PI3 lautet der Name andresvidal/rpi3-mongodb3 , für arm64v8 oder für amd64 ist der Container mongo

    Stellen Sie sicher, dass Sie über dieselbe Version des MongoDB-Images verfügen, die zum Erstellen der Datendateien verwendet wurde.

    Wenn die Dateien nicht mehr repariert werden können, versuchen Sie Folgendes:

    docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
    
  3. Sobald die Dateien repariert sind, müssen Sie einen Container über die Datenbank starten und die Dateien mit

    exportieren
    docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
    
  4. Starten Sie eine saubere Datenbank für Ihr Projekt und verwenden Sie mongorestore um die Daten in die neue Datenbank zu importieren.

Weitere Informationen finden Sie unter den folgenden Links: