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 --repairLe 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 estmongoAssurez-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
mongorestorepour 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