Назад | Перейти на главную страницу

Почему после удаления коллекции размером более 110 ГБ мой каталог / var / lib / mongodb все еще имеет такой же размер?

У меня проблемы с MongoDB и использованием пространства. В частности, у меня когда-то была большая коллекция из 600 миллионов записей общим объемом более 110 ГБ на диске. Недавно я решил отбросить его, потому что данные устарели, для этого я сбросил коллекцию через веб-интерфейс rockmongo. Соответственно, rockmongo больше не показывает мне коллекцию, однако использование моего диска вообще не изменилось.

Есть ли какая-нибудь чистая операция, о которой я не знаю, которую необходимо выполнить, чтобы синхронизировать базу данных с файлами базы данных на диске?

Я попытался выполнить «ремонт», но система жалуется, что на диске недостаточно места ... это потому, что все это используется MongoDB.

Как и в большинстве систем баз данных, файлы базы данных не сжимаются при удалении данных, данные просто удаляются / помечаются как удаленные, а пространство используется повторно.

Вам нужно будет бежать db.repairDatabase() для компактного пространства, как указано Вот

Хотя описанный выше подход mongodump / drop / mongorestore будет работать нормально с технической точки зрения, он потребует, чтобы вы отключили базу данных, пока вы это делаете, что может повлиять на работу службы.

Если вы хотите сделать это без простоев, И если вы используете наборы реплик MongoDB [1], вы можете сделать это следующим образом:

  1. Выберите участника и остановите там MongoDB (остановка сервиса mongodb). Если это был ПЕРВИЧНЫЙ, дождитесь, пока другой член будет избран ПЕРВИЧНЫМ.
  2. Удалите файлы данных на этом члене (cd / var / lib / mongodb; rm *).
  3. Снова перезапустите службу MongoDB (запуск службы mongodb).
  4. Подождите, пока член повторно синхронизируется с ПЕРВИЧНЫМ (rs.status ()).
  5. Это восстановит только необходимые (меньшие) файлы данных.

Затем повторите описанные выше шаги для всех остальных членов набора реплик.

[1] https://docs.mongodb.org/manual/tutorial/deploy-replica-set)

Согласно этому FAQ https://docs.mongodb.com/manual/faq/storage/#faq-disk-size

единственный способ - сделать следующее:

  • настроить новую и пустую реплику
  • синхронизировать с мастером
  • установить его как хозяина