Требуется ли для набора реплик MongoDB хотя бы 2 или 3 члена?

16

Документация здесь гласит три: http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

«Набор реплик требует трех разных систем ...»

Принимая во внимание, что документация здесь говорит два: http://docs.mongodb.org/manual/core/replication/

«Большинство наборов реплик состоит из двух или более экземпляров Mongod ...»

Кто-нибудь знает, что является правильным?

кошачьи штаны
источник

Ответы:

19

Вы действительно можете запустить один элемент "set", если хотите.

3 члена (или более высокое нечетное число) действительно лучше. Наборы реплик становятся доступными только для чтения, если большая часть набора недоступна, поэтому, если вы потеряете элемент в наборе из двух элементов, оставшийся элемент станет доступным только для чтения.

Вы также можете запустить двух полноправных членов плюс член «только для голосования» (называемый арбитром). Это наименьший достаточно безопасный вариант для набора реплик.

MrKurt
источник
6
Хочу подчеркнуть, что два участника не отказоустойчивая система. @MrKurt правильно, что если один участник выходит из строя (незапланированно), то другой не может быть ПЕРВИЧНЫМ и перейдет на ВТОРИЧНЫЙ (только для чтения). Другими словами, если вам нужна реплика в производстве, 3 члена - это минимум для отказоустойчивости в случае отказа участника.
Брет Фишер
3

Это в основном проблема формулировки, потому что требования в руководстве не являются общим утверждением о наборах реплик, а относятся к самой части учебника. Требуется для развертывания набора реплик в целом 1 или более, большинство из них имеют 2 или более, но учебник, на который вы ссылаетесь, специально предназначен для развертывания набора из 3 элементов:

В этом руководстве описывается, как создать набор из трех элементов-реплик из трех существующих экземпляров MongoDB.

Следовательно, требование к учебнику состоит в том, чтобы в наборе было 3 члена. Тем не менее, наличие двух операторов немного сбивает с толку, поэтому я отправил запрос на удаление (EDIT: запрос на удаление теперь объединен), чтобы немного его очистить.

У вас может быть один узел mongod, сконфигурированный как часть набора реплик, но, строго говоря, это не будет «набор». Фактически, поскольку репликация использует больше ресурсов, чем автономная mongod(в основном из-за оплога ), на самом деле нет смысла запускать один элемент, если только это не является временной мерой до добавления других членов в набор или если вам требуется оплог для другие причины (например, резервное копирование).

Адам С
источник