Vous avez une corruption du fichier de données à cause du démontage impur du disque lors de l'arrêt. Même si vous restaurez la base de données, vous pouvez toujours rencontrer des problèmes dus à l'incohérence des clés dans la base de données. Voici une procédure pour résoudre correctement ces problèmes
Récupération de MongoDB après une panne brutale
-
Si les fichiers de la base de données se trouvent sur votre hôte, faites-en une copie avant de commencer cette procédure. Pour les copier, vous pouvez utiliser
docker cp <container_name>:<location of files in container> <location on host>
Si les fichiers de la base de données sont toujours à l'intérieur du conteneur, récupérez-les à l'extérieur du conteneur et faites-en une copie
-
Démarrez un conteneur de réparation sur les fichiers comme suit :
docker run -it -v <data folder>:/data/db <image name>:<image-version> mongod --repair
Le nom de l'image dépend de la plateforme, et pour Raspberry PI3 le nom est
andresvidal/rpi3-mongodb3
, pour arm64v8 ou pour amd64 le conteneur estmongo
Assurez-vous d'avoir la même version de l'image MongoDB que celle utilisée pour créer les fichiers de données.
Si les fichiers sont irréparables, essayez :
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --repair --dbpath /data/db
-
Une fois les fichiers réparés, vous devez démarrer un conteneur sur la base de données et exporter les fichiers avec
docker run -it -v <data folder>:/data/db mongo:<image-version> mongodump --dbpath /data/db
-
Démarrez une base de données propre pour votre projet et utilisez
mongorestore
pour importer les données dans la nouvelle base de données.
Vous pouvez consulter les liens suivants pour plus d'informations :
- Exportation de la base de données avec réparation
- Restauration après suppression de fichier
- vidage et restauration de MongoDB