Hai un file di dati danneggiato dallo smontaggio non pulito del disco durante l'arresto. Anche se si ripristina il database, si possono comunque riscontrare problemi dovuti all'incoerenza delle chiavi nel database. Di seguito è una procedura per affrontare correttamente questo problema
Ripristina MongoDB da un errore improvviso
-
Se i file di database si trovano sul tuo host, eseguine una copia prima di iniziare questa procedura. Per copiarli, puoi usare
docker cp <container_name>:<location of files in container> <location on host>
Se i file di database sono ancora all'interno del contenitore, prendi l'esterno del contenitore ed esegui una copia
-
Avvia un contenitore di riparazione sui file come segue:
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
Il nome dell'immagine dipende dalla piattaforma e per Raspberry PI3 il nome è
andresvidal/rpi3-mongodb3
, per arm64v8 o per amd64 il contenitore èmongo
Assicurati di avere la stessa versione dell'immagine MongoDB di quella utilizzata per creare i file di dati.
Se i file sono irreparabili, prova:
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Una volta che i file sono stati riparati, devi avviare un contenitore sul database ed esportare i file con
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Avvia un database pulito per il tuo progetto e usa
mongorestore
per importare i dati nel nuovo database.
Puoi controllare i seguenti link per ulteriori informazioni:
- Esportazione del database con riparazione
- Ripristina dopo l'eliminazione del file
- Dump e ripristino MongoDB