Masz uszkodzenie pliku danych z powodu nieczystego odmontowania dysku podczas zamykania. Nawet jeśli przywrócisz bazę danych, nadal możesz napotkać problemy z powodu niespójności kluczy w bazie danych. Poniżej znajduje się procedura prawidłowego rozwiązania tego problemu
Odzyskiwanie MongoDB po nagłej awarii
-
Jeśli pliki bazy danych znajdują się na twoim hoście, wykonaj ich kopię przed rozpoczęciem tej procedury. Aby je skopiować, możesz użyć
docker cp <container_name>:<location of files in container> <location on host>
Jeśli pliki bazy danych nadal znajdują się w kontenerze, wyjmij je poza kontener i zrób kopię
-
Uruchom kontener naprawy nad plikami w następujący sposób:
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
Nazwa obrazu zależy od platformy, a dla Raspberry PI3 nazwa to
andresvidal/rpi3-mongodb3
, dla arm64v8 lub amd64 kontener tomongo
Upewnij się, że masz tę samą wersję obrazu MongoDB, która została użyta do utworzenia plików danych.
Jeśli plików nie da się naprawić, spróbuj:
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Po naprawieniu plików musisz uruchomić kontener w bazie danych i wyeksportować pliki za pomocą
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Uruchom czystą bazę danych dla swojego projektu i użyj
mongorestore
aby zaimportować dane do nowej bazy danych.
Możesz sprawdzić następujące linki, aby uzyskać więcej informacji: