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
-
Wenn sich die Datenbankdateien auf Ihrem Host befinden, kopieren Sie sie, bevor Sie mit diesem Verfahren beginnen. Um sie zu kopieren, können Sie
verwendendocker 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
-
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 Containermongo
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
-
Sobald die Dateien repariert sind, müssen Sie einen Container über die Datenbank starten und die Dateien mit
exportierendocker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
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:
- Exportieren der Datenbank mit Reparatur
- Nach Dateilöschung wiederherstellen
- MongoDB-Dump und -Wiederherstellung