Подтвердить что ты не робот

Удаление данных MongoDB - восстановление диска

Возможный дубликат:
Автоматическое сжатие удаленного пространства в mongodb?

Я понимаю, что при операции удаления MongoDB не освобождает дисковое пространство, но будет использовать его по мере необходимости.

  • Правильно ли это?
  • Если нет, могу ли я запустить команду восстановления?
  • Может ли ремонт выполняться на экземпляре live mongo?
4b9b3361

Ответ 1

  • Да, это правильно.
  • Нет, лучше дать mongodb максимально возможное количество дискового пространства (если mongodb может выделять больше места, чем меньше фрагментации диска, в дополнительном распределении пространства - это дорогостоящая операция). Но если вы хотите, вы можете запустить db.repairDatabase() из оболочки mongodb, чтобы уменьшить размер базы данных.
  • Да, вы можете запустить repairDatabase на экземпляре live mongodb (лучше запустить его в часы без пика)

Ответ 2

Это несколько дубликат этого вопроса MongoDB...

Автоматическое сжатие удаленного пространства в mongodb?

Подробнее см. в этом ответе...

  • Зарезервируйте некоторое пространство
  • Использовать serveride JS запустить повторную работу, чтобы вернуться (включая script, вы можете запустить...)
  • Как вы можете смотреть в сборник для некоторых видов использования случаи!

Также вы можете увидеть эту связанную запись в блоге: http://learnmongo.com/posts/compacting-mongodb-data-files/

Ответ 3

У меня есть другое решение, которое может работать лучше, чем db.repairDatabase(), если вы не можете позволить себе заблокировать систему или не иметь двойной памяти.

Вы должны использовать набор реплик.

Моя мысль заключается в том, что вы удалили все лишние данные, которые поглощали ваш диск, останавливали вторичную реплику, уничтожали ее каталог данных, запускали ее и позволяли повторно синхронизировать с мастером. Повторяйте с другими секундомерами по одному за раз.

На главном сервере выполните команду rs.stepDown(), чтобы передать MASTER одному из синхронизированных второстепенных объектов, теперь остановите это, вытрите и повторите процедуру.

Процесс занимает много времени, но он должен стоить всего несколько секунд бездействия, когда вы выполняете команду rs.stepDown().