sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué necesitamos un 'árbitro' en la replicación de MongoDB?

Creé una hoja de cálculo para ilustrar mejor el efecto de los nodos Arbiter en un conjunto de réplicas.

Básicamente se reduce a estos puntos:

  1. Con una RS de 2 nodos de datos , perder 1 servidor lo coloca por debajo de su mínimo de votación (que es "mayor que N/2"). Un árbitro resuelve esto.
  2. Con una RS de nodos de datos con números pares , agregar un árbitro aumenta su tolerancia a fallas en 1 sin hacer posible tener 2 grupos de votación debido a una división.
  3. Con una RS de nodos de datos impares , agregar un Inquisidor permitiría una división para crear 2 grupos aislados con "más de N/2" votos y, por lo tanto, un escenario de cerebro dividido.

Las elecciones se explican [en pobre] detalle aquí. En ese documento establece que una RS puede tener 50 miembros (número par) y 7 miembros votantes. Hago hincapié en "estados" porque no explica cómo funciona. Me parece que si tiene una división con 4 miembros (todos votantes) de un lado y 46 miembros (3 votantes) del otro, preferiría que los 46 elijan una primaria y los 4 sean lectores. solo racimo. Pero eso es exactamente lo que impide la "votación limitada". En esa situación, en realidad tendrá un clúster de 4 miembros con un principal y un clúster de 46 miembros que es de solo lectura. Explicar cómo eso tiene sentido está fuera del alcance de esta pregunta y más allá de mi conocimiento.