Я использую Open edX, который использует MongoDB для хранения курсов. мы используем набор реплик из трех узлов. В настоящее время используется раздельный монго — функция, которая делает копию текущего документа (резервную копию) перед редактированием. Со временем они накапливаются, что приводит к потреблению большого дискового пространства. В настоящее время существует около 30 курсов, и когда я их экспортирую, они занимают около 2-3 ГБ. Однако дисковое пространство, которое он фактически использует,
Я попытался очистить ненужные курсы, используя этот скрипт
После выполнения этого в основном члене требуется некоторое время и удаляются все ненужные документы. Но это не освобождает место на диске.
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
}
root@mongo:~# 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
Я попытался сжать БД, используя
rs0:SECONDARY> db.runCommand( { compact : 'modulestore.structures', force: 'true' } )
{ "ok" : 1 }
Это тоже не помогло.
Может кто-нибудь, пожалуйста, дайте мне знать, как освободить место на диске в такой ситуации? Я хочу сделать это на prod-сервере как можно быстрее.