MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Perché abbiamo bisogno di un "arbitro" nella replica di MongoDB?

Ho creato un foglio di calcolo per illustrare meglio l'effetto dei nodi Arbiter in un set di repliche.

Fondamentalmente si riduce a questi punti:

  1. Con una RS di 2 nodi di dati , perdere 1 server ti porta al di sotto del tuo minimo di voto (che è "maggiore di N/2"). Un arbitro risolve questo.
  2. Con una RS di nodi di dati con numerazione pari , l'aggiunta di un arbitro aumenta la tua tolleranza agli errori di 1 senza rendere possibile la presenza di 2 gruppi di votazione a causa di una divisione.
  3. Con una RS di nodi di dati con numerazione dispari , l'aggiunta di un arbitro consentirebbe a una divisione di creare 2 gruppi isolati con voti "maggiori di N/2" e quindi uno scenario di cervello diviso.

Le elezioni sono spiegate [in modo scarso] qui. In quel documento afferma che una RS può avere 50 membri (numero pari) e 7 membri votanti. Sottolineo "stati" perché non spiega come funziona. A me sembra che se si verifica una divisione con 4 membri (tutti votanti) da una parte e 46 membri (3 votanti) dall'altra, preferiresti che i 46 eleggessero una primaria e i 4 fossero una legge- unico grappolo. Ma questo è esattamente ciò che impedisce il "voto limitato". In quella situazione avrai effettivamente un cluster a 4 membri con un cluster primario e un cluster a 46 membri di sola lettura. Spiegare come ciò abbia senso è fuori dallo scopo di questa domanda e oltre la mia conoscenza.