¿Un conjunto de réplicas MongoDB requiere al menos 2 o 3 miembros?

Respuestas:

19

De hecho, puede ejecutar un "conjunto" de un solo miembro si lo desea.

Sin embargo, 3 miembros (o un número impar más alto) es realmente el mejor. Los conjuntos de réplicas se leen solo si la mayoría del conjunto no está disponible, por lo que si pierde un miembro en un conjunto de dos miembros, el miembro restante se convierte en solo lectura.

También puede ejecutar dos miembros completos más un miembro "solo de votación" (llamado árbitro). Esta es la opción más pequeña razonablemente segura para un conjunto de réplicas.

MrKurt
fuente
66
Quiero destacar que dos miembros no son un sistema tolerante a fallas. @MrKurt tiene razón en que si un miembro deja de funcionar (no planificado), el otro no puede ser PRIMARIO y pasará a SECUNDARIO (solo lectura). En otras palabras, si necesita una réplica en producción, 3 miembros es el mínimo para la tolerancia a fallas contra la falla de un miembro.
Bret Fisher
3

Esto es básicamente un problema de redacción porque los requisitos del tutorial no son una declaración general sobre conjuntos de réplicas, sino que pertenecen al tutorial en sí. El requisito para implementar un conjunto de réplicas en general es 1 o más, la mayoría tiene 2 o más, pero el tutorial al que se vincula es específicamente para implementar un conjunto de 3 miembros:

Este tutorial describe cómo crear un conjunto de réplicas de tres miembros a partir de tres instancias existentes de MongoDB

Por lo tanto, el requisito para el tutorial es que el conjunto tenga 3 miembros. Sin embargo, es un poco confuso tener las dos declaraciones, así que envié una solicitud de extracción (EDITAR: la solicitud de extracción ahora se ha fusionado) para limpiarla un poco.

Puede tener un solo nodo mongod configurado para formar parte de un conjunto de réplicas, pero estrictamente hablando eso no sería un "conjunto". De hecho, dado que la replicación usa más recursos que un sistema independiente mongod(básicamente debido al oplog ), realmente no tiene sentido ejecutar un solo miembro a menos que sea como una medida temporal antes de agregar otros miembros al conjunto o si necesita un oplog para otras razones (como respaldo).

Adam C
fuente