Репликация и отказоустойчивость MongoDB
Managed Service for MongoDB поддерживает репликацию по умолчанию: если в кластере есть больше 1 активного хоста, среди них автоматически выбирается первичная реплика (мастер), обрабатывающая запросы на запись.
При переключении первичной реплики вручную MongoDB автоматически выберет новую из доступных хостов.
Подробнее о том, как организована репликация в MongoDB, читайте в документации СУБД
Отказоустойчивость
Чтобы хосты кластера могли при необходимости автоматически выбирать первичную реплику, абсолютное большинство хостов должно быть работоспособно. Поэтому экономичнее разворачивать кластеры с нечетным количеством хостов. Например, кластер с 3 хостами может потерять 1 хост и продолжить работу, но кластер с 4 хостами также может потерять не более 1 хоста — при потере второго хоста оставшихся не хватит, чтобы выбрать новую первичную реплику.
Кластер из 2 хостов не обеспечивает полной отказоустойчивости по той же причине: единственный оставшийся хост не сможет назначить себя первичной репликой самостоятельно. В этой ситуации кластер может обрабатывать только запросы на чтение.
Назначение мастером другого хоста при выходе из строя основного мастера
Если хост-мастер выйдет из строя, то MongoDB автоматически выберет новый хост-мастер из доступных хостов.
Повлиять на выбор мастера в кластере MongoDB можно с помощью настройки приоритетов для хостов кластера. Новым мастером станет хост с наибольшим приоритетом.
Задать приоритет хоста можно с помощью YC CLI, API или Terraform:
- при создании кластера или хоста в кластере;
- при изменении настроек хоста.
Минимальное значение (наименьший приоритет) — 0
. Хост с таким приоритетом может стать мастером, только если нет других подходящих на роль мастера хостов. Значение приоритета по умолчанию — 1
. Возможен ввод значения больше 100
.