Máte poškození datového souboru z nečistého odpojení disku během vypínání. I když obnovíte databázi, stále můžete čelit problémům kvůli nekonzistenci klíčů v databázi. Následuje postup, jak správně vyřešit tento problém
Obnova MongoDB po náhlém selhání
-
Pokud jsou databázové soubory na vašem hostiteli, zkopírujte je před zahájením tohoto postupu. Chcete-li je zkopírovat, můžete použít
docker cp <container_name>:<location of files in container> <location on host>
Pokud jsou databázové soubory stále uvnitř kontejneru, získejte vnější kontejner a vytvořte kopii
-
Spusťte kontejner opravy nad soubory následovně:
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
Název obrázku závisí na platformě a pro Raspberry PI3 je název
andresvidal/rpi3-mongodb3
, pro arm64v8 nebo pro amd64 je kontejnermongo
Ujistěte se, že máte stejnou verzi obrazu MongoDB jako ta, která byla použita k vytvoření datových souborů.
Pokud soubory nelze opravit, zkuste:
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Jakmile jsou soubory opraveny, musíte spustit kontejner nad databází a exportovat soubory pomocí
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Spusťte pro svůj projekt čistou databázi a použijte
mongorestore
importovat data do nové databáze.
Další informace naleznete na následujících odkazech: