Открытый edX и разделенный монго занимают место на диске

Я использую 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-сервере как можно быстрее.


person Arun V    schedule 18.08.2017    source источник


Ответы (1)


Вам необходимо выполнить первоначальную синхронизацию. Один вторичный за один раз и, наконец, откажитесь от основного и выполните первоначальную синхронизацию на нем.

Итак, вы останавливаете вторичное, а затем удаляете все файлы с узлов dbPath. Запустите узел и дайте ему выполнить первоначальную синхронизацию. Повторите это для всех узлов.

person JJussi    schedule 20.08.2017
comment
Да! Мне это помогло. Я выполнил первоначальную синхронизацию во всех трех наборах реплик, как было предложено. Он освободил место на диске и не было простоев. Спасибо за Ваш ответ! - person Arun V; 22.08.2017