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

MongoDB - убивается, когда диск базы данных заполнен

Я использую MongoDB 3.6.5 (уже проверено на 3.2 / 3.4), и я включил "directoryPerDB" в /etc/mongo.conf.

#mongod.conf

storage:
   dbPath: /var/lib/mongodb
   journal:
     enabled: true
   directoryPerDB: true

Я создал LVM-диски для своих баз данных и сделал символическую ссылку на / var / lib / mongodb

Вот проблема:

Когда один из этих lvm заполнен, он убьет сервис mongod, поэтому я не могу использовать остальные базы данных, где есть свободное место на хранилище. Из-за этого это убьет мой первичный узел, а затем и вторичный узел.

Есть ли способ с этим справиться?

Мы будем благодарны за вашу помощь!

В зависимости от ваших потребностей вы можете просто создать один большой LVM и смонтировать его на / var / lib / mongodb и создавать папки на большом LVM. Это даст всем базам данных доступ к полной мощности.

Другой подход - избыточное выделение отдельных LVM для каждой базы данных. Либо используйте больше физического пространства для LVM по мере необходимости, либо используйте тонкие пулы LVM.
Где первый подход был бы очень статичным и пустым использованием пространства.
Использование тонких пулов откроет возможность добавить физическое хранилище по мере необходимости в более позднее время.
Оба подхода требуют хорошего планирования и могут не соответствовать вашим потребностям. Также может потребоваться изменить размер LVM и файловой системы при нехватке места, что всегда является критическим путем в производственной системе.

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

Еще одна идея - перейти на btrfs или zfs. Обе файловые системы имеют аналогичный подход к LVM, но намного проще добавлять или удалять пространство на томе, и вам не нужно увеличивать / уменьшать файловую систему. Таким образом, он намного более гибкий, но требует более высокой сложности.

В любом случае вы хотите контролировать использование пространства с помощью Nagios, Icinga2, Prometheus или стека TICK или любого другого мониторинга, который вы хотите использовать. В зависимости от ваших потребностей вы также можете запустить скрипт, когда будет достигнут предел места, чтобы позаботиться о ситуации.

Для себя я бы выбрал первый вариант, используя только один большой LVM и создавая там папки. Во-вторых, я бы пошел на zfs или btrfs поскольку эти файловые системы дают вам возможность легко управлять пространством хранения без изменения размера LVM и файловых систем.