MISE À JOUR : avec le compact
commande et WiredTiger, il semble que l'espace disque supplémentaire sera effectivement libéré sur le système d'exploitation.
MISE À JOUR : à partir de la v1.9+, il existe un compact
commande.
Cette commande effectuera un compactage "en ligne". Il aura encore besoin d'espace supplémentaire, mais pas autant.
MongoDB compresse les fichiers en :
- copier les fichiers vers un nouvel emplacement
- parcourir les documents en boucle et les réorganiser / les résoudre
- remplacement des fichiers d'origine par les nouveaux fichiers
Vous pouvez faire cette "compression" en exécutant mongod --repair
ou en se connectant directement et en exécutant db.repairDatabase()
.
Dans les deux cas, vous avez besoin d'espace quelque part pour copier les fichiers. Maintenant, je ne sais pas pourquoi vous n'avez pas assez d'espace pour effectuer une compression, cependant, vous avez quelques options si vous avez un autre ordinateur avec plus d'espace.
- Exportez la base de données vers un autre ordinateur avec Mongo installé (en utilisant
mongoexport
) et ensuite vous pouvez importer cette même base de données (en utilisantmongoimport
). Cela se traduira par une nouvelle base de données plus compressée. Vous pouvez maintenant arrêter lemongod
d'origine remplacez par les nouveaux fichiers de base de données et vous êtes prêt à partir. - Arrêtez le mongod actuel et copiez les fichiers de la base de données sur un ordinateur plus gros et exécutez la réparation sur cet ordinateur. Vous pouvez ensuite replacer les nouveaux fichiers de base de données sur l'ordinateur d'origine.
Il n'existe actuellement aucun bon moyen de "compacter sur place" en utilisant Mongo. Et Mongo peut certainement aspirer beaucoup d'espace.
La meilleure stratégie actuelle pour le compactage consiste à exécuter une configuration maître-esclave. Vous pouvez ensuite compacter l'esclave, le laisser rattraper et les basculer. Je sais encore un peu poilu. Peut-être que l'équipe Mongo proposera un meilleur compactage sur place, mais je ne pense pas que ce soit en haut de leur liste. L'espace disque est actuellement supposé être bon marché (et c'est généralement le cas).