MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que precisamos de um 'árbitro' na replicação do MongoDB?


Criei uma planilha para ilustrar melhor o efeito dos nós Arbiter em um conjunto de réplicas.



Basicamente se resume a estes pontos:
  1. Com um RS de 2 nós de dados , perder 1 servidor deixa você abaixo do seu mínimo de votação (que é "maior que N/2"). Um árbitro resolve isso.
  2. Com um RS de nós de dados de número par , adicionar um Árbitro aumenta sua tolerância a falhas em 1 sem possibilitar ter 2 grupos de votação devido a uma divisão.
  3. Com um RS de nós de dados numerados ímpares , adicionar um Árbitro permitiria que uma divisão criasse 2 clusters isolados com votos "maiores que N/2" e, portanto, um cenário de cérebro dividido.

As eleições são explicadas em [pouco] detalhes aqui. Nesse documento, declara que um RS pode ter 50 membros (número par) e 7 membros votantes. Enfatizo "estados" porque não explica como funciona. Para mim, parece que se você tiver uma divisão com 4 membros (todos votando) de um lado e 46 membros (3 votando) do outro, você prefere que os 46 elejam o primário e os 4 sejam um read- apenas aglomerado. Mas é exatamente isso que o "voto limitado" impede. Nessa situação, você realmente terá um cluster de 4 membros com um cluster primário e um cluster de 46 membros que é somente leitura. Explicar como isso faz sentido está fora do escopo desta questão e além do meu conhecimento.