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

Hvorfor har vi brug for en 'arbiter' i MongoDB-replikering?

Jeg oprettede et regneark for bedre at illustrere effekten af ​​Arbiter-noder i et replikasæt.

Det kommer dybest set ned til disse punkter:

  1. Med en RS på 2 dataknuder , at miste 1 server bringer dig under dit stemmeminimum (som er "større end N/2"). En dommer løser dette.
  2. Med en RS af lige nummererede dataknuder Hvis du tilføjer en dommer, øges din fejltolerance med 1 uden at gøre det muligt at have 2 stemmeklynger på grund af en opdeling.
  3. Med en RS af ulige nummererede dataknudepunkter , vil tilføjelse af en Arbiter tillade en opdeling for at skabe 2 isolerede klynger med "større end N/2" stemmer og derfor et split hjernescenarie.

Valg er forklaret [i dårlige] detaljer her. I det dokument siger det at en RS kan have 50 medlemmer (lige antal) og 7 stemmeberettigede medlemmer. Jeg understreger "tilstande", fordi det ikke forklarer hvordan det virker. For mig ser det ud til, at hvis du har en splittelse med 4 medlemmer (alle stemmer) på den ene side og 46 medlemmer (3 stemmer) på den anden side, vil du hellere have, at de 46 vælger en primær og de 4 skal være læse- kun klynge. Men, det er præcis, hvad "begrænset afstemning" forhindrer. I den situation vil du faktisk have en 4-medlemsklynge med en primær og en 46-medlemsklynge, der er skrivebeskyttet. At forklare, hvordan det giver mening, er uden for dette spørgsmåls omfang og uden for min viden.



  1. Hvordan kan jeg generere et ObjectId med mongoose?

  2. Tæller socket.io-brugere på tværs af vandrette servere

  3. MongoNetworkError:kunne ikke oprette forbindelse til serveren [localhost:27017] ved første forbindelse [MongoNetworkError:connect ECONNREFUSED 127.0.0.1:27017]

  4. redis til logning