Question

J'ai un problème d'espace avec mongoDB et mon ordinateur de bureau Ubuntu 12.04 actuel.J'ai toujours utilisé le paramètre par défaut, ce qui signifie que les données sont physiquement stockées sous /var/lib/mongodb.Au moment où la taille de la base de données a considérablement augmenté, j'aimerais maintenant supprimer certaines collections pour avoir de l'espace vide sur mon disque dur.j'ai vérifié ce et d'autres méthodes Mais chaque fois que j'exécute la fonction de suppression, je reçois toujours le message d'erreur suivant :

Can't take a write lock while out of disk space

La première solution qui m'est venue à l'esprit est de définir le chemin de mongodb vers un disque dur externe ou un disque USB et de supprimer physiquement le dossier en utilisant rm -rf.Serait-ce une solution sûre ?Existe-t-il d'autres solutions à ce problème ?

Était-ce utile?

La solution

Mongodb est très efficace pour copier des bases de données, car tout ce que vous avez à faire est de copier le répertoire de données complet ailleurs, puis vous pouvez simplement y pointer un nouveau processus Mongod et cela fonctionnera.

Vos étapes sont donc :

  • Trouver le répertoire de données actuel
  • Copiez ceci vers un autre emplacement
  • Supprimez tout fichier qui a .loc dans le répertoire (cela empêche le chargement de Mongo)
  • Maintenant, démarrez un autre mongo avec la commande suivante :

    mongod --dbpath <path to new directory on new disk> --port 27020
    

Cela ouvrira maintenant une nouvelle base de données mongo (mais sur un port différent pour éviter tout problème avec un mongod qui pourrait déjà être en cours d'exécution).Vous aurez désormais un nouveau mongod exécuté sur le nouveau disque sans avoir besoin de supprimer les collections \ dbs.N'oubliez pas que Mongodb est gourmand et n'abandonne pas volontairement de l'espace disque lorsque vous supprimez une collection.Vous devrez courir

 db.repairDatabase()

Une fois que vous êtes satisfait, vous pouvez supprimer en toute sécurité l'ancien répertoire de données mongodb, puis copier le nouveau dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top