MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Warum brauchen wir einen „Arbiter“ in der MongoDB-Replikation?

Ich habe eine Tabelle erstellt, um die Wirkung von Arbiter-Knoten in einem Replikat-Set besser zu veranschaulichen.

Es läuft im Wesentlichen auf diese Punkte hinaus:

  1. Mit einem RS von 2 Datenknoten , bringt Sie der Verlust von 1 Server unter Ihr Abstimmungsminimum (das "größer als N/2" ist). Ein Schiedsrichter löst dies.
  2. Mit einem RS von gerade nummerierten Datenknoten , erhöht das Hinzufügen eines Arbiters Ihre Fehlertoleranz um 1, ohne dass es aufgrund einer Aufteilung möglich ist, 2 Abstimmungscluster zu haben.
  3. Mit einem RS von ungerade nummerierten Datenknoten , würde das Hinzufügen eines Arbiters es einem Split ermöglichen, 2 isolierte Cluster mit "größer als N/2" Stimmen und daher ein Split-Brain-Szenario zu erstellen.

Wahlen werden hier [in schlechtem] Detail erklärt. In diesem Dokument steht dass eine RS 50 Mitglieder (gerade Zahl) und 7 stimmberechtigte Mitglieder haben kann. Ich betone "states", weil es nicht erklärt wie es funktioniert. Für mich scheint es, dass Sie bei einer Spaltung mit 4 Mitgliedern (alle stimmberechtigt) auf der einen Seite und 46 Mitgliedern (3 stimmberechtigt) auf der anderen Seite lieber die 46 als Primäre wählen und die 4 als Leser. nur Cluster. Aber genau das verhindert „Limited Voting“. In dieser Situation haben Sie tatsächlich einen 4-Mitglieder-Cluster mit einem primären und einem schreibgeschützten 46-Mitglieder-Cluster. Zu erklären, wie das sinnvoll ist, liegt außerhalb des Rahmens dieser Frage und außerhalb meines Wissens.