J'utilise Open edX qui utilise MongoDB pour stocker des cours. nous exécutons un jeu de réplicas à trois nœuds. Il utilise actuellement split mongo - une fonctionnalité qui fait une copie du document en cours (sauvegarde) avant de le modifier. Comme le temps passe, cela s'accumule, ce qui entraîne la consommation d'espace disque important. Il y a actuellement environ 30 cours et quand je l'exporte, il consomme environ 2-3 GB. Cependant, l'espace disque, il utilise réellement estOpen edX et split mongo consomment de l'espace disque
J'ai essayé de nettoyer les cours indésirables à l'aide this script
Lors de l'exécution de ce membre dans primaire, il faut un certain temps et supprime tous les documents indésirables. Mais il ne libère pas l'espace disque.
rs0:SECONDARY> db.stats()
{
"db" : "edxapp",
"collections" : 5,
"objects" : 277557,
"avgObjSize" : 112645.21484235671,
"dataSize" : 31265467896,
"storageSize" : 57843929088,
"numExtents" : 0,
"indexes" : 6,
"indexSize" : 6938624,
"ok" : 1
}
[email protected]:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 4082828 12 4082816 1% /dev
tmpfs 817564 396 817168 1% /run
/dev/xvda1 8115168 1805528 5874364 24%/
none 4 0 4 0% /sys/fs/cgroup
none 5120 0 5120 0% /run/lock
none 4087804 0 4087804 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/xvdf 62904320 57542660 5361660 92% /edx
/dev/xvdh 72117576 53012 68378164 1% /tmp/repairdb
J'ai essayé de compacter le DB en utilisant
rs0:SECONDARY> db.runCommand({ compact : 'modulestore.structures', force: 'true' })
{ "ok" : 1 }
Il n'a pas aidé non plus.
Quelqu'un pourrait-il me faire savoir comment récupérer l'espace disque dans une telle situation? Je veux faire ceci dans le serveur de prod aussi vite que je peux.
Lire Mojo réponse: https://stackoverflow.com/questions/5518581/mongodb-data-remove-reclaim-diskspace – Hackerman