MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pourquoi avons-nous besoin d'un « arbitre » dans la réplication MongoDB ?

J'ai créé une feuille de calcul pour mieux illustrer l'effet des nœuds Arbiter dans un jeu de répliques.

Cela se résume essentiellement à ces points :

  1. Avec un RS de 2 nœuds de données , perdre 1 serveur vous ramène en dessous de votre minimum de vote (qui est "supérieur à N/2"). Un arbitre résout ce problème.
  2. Avec une RS de nœuds de données pairs , l'ajout d'un arbitre augmente votre tolérance aux pannes de 1 sans qu'il soit possible d'avoir 2 clusters de vote en raison d'une scission.
  3. Avec un RS de nœuds de données impairs , l'ajout d'un Arbiter permettrait à un split de créer 2 clusters isolés avec des votes "supérieurs à N/2" et donc un scénario split brain.

Les élections sont expliquées [en pauvres] détails ici. Dans ce document, il indique qu'une RS peut avoir 50 membres (nombre pair) et 7 membres votants. J'insiste sur les "états" car cela n'explique pas Comment ça fonctionne. Il me semble que si vous avez une scission avec 4 membres (tous votants) d'un côté et 46 membres (3 votants) de l'autre, vous préféreriez que les 46 élisent une primaire et les 4 une lecture- seule grappe. Mais c'est exactement ce que le "vote limité" empêche. Dans cette situation, vous aurez en fait un cluster de 4 membres avec un cluster principal et un cluster de 46 membres en lecture seule. Expliquer comment cela a du sens sort du cadre de cette question et dépasse mes connaissances.