sql >> Databasteknik >  >> NoSQL >> MongoDB

Två noder MongoDB replica set utan arbiter

Kort svar:gör inte det.

Långt svar:hur automatisk failover fungerar i MongoDB är att en replikuppsättning behöver kvalificerad majoritet för att framgångsrikt välja en ny primär. Försenade medlemmar har röster i val. Så om antingen av dina noder misslyckas upptäcker replikuppsättningen att den inte har denna majoritet och de nuvarande primära stegen ned även om den inte misslyckades. Så vad du egentligen gör är att dubbla chansen att få din replikuppsättning att misslyckas. En arbiter är en mycket billig process, vad gäller RAM-användning, CPU och till och med diskutrymme när den körs med --smallfiles --no-journal --noprealloc eller motsvarande alternativ som anges i konfigurationsfilen. Observera att de nämnda alternativen är säkra att använda, eftersom en arbiter i princip bara kontrollerar hjärtslagen för de databärande noderna. Du kan till exempel placera medlaren på applikationsservern.

Ansvarsfriskrivning:följande procedur avråds starkt från att använda. Fortsätt på egen risk.

Du kan ställa in rösterna för den fördröjda servern till 0. På så sätt kommer den ofördröjda noden att kalla till val om den fördröjda medlemmen misslyckas, kommer till slutsatsen att det är den enda noden online av replikuppsättningen och att den har röstmajoriteten (1/1) och kommer att fortsätta arbeta som förväntat. Detta tillvägagångssätt kräver lite uppmärksamhet, eftersom du kommer att få ett jämnt antal röster igen om du lägger till en medlem till replikuppsättningen senare och gör det nödvändigt att konfigurera om replikuppsättningen. Det har också allvarliga konsekvenser med nätverksfragmenteringsproblem. Återigen:Användning på egen risk



  1. C# med mongodb DateTime Convert

  2. Hitta exakt matchande array eller ha hela värdet av array i MongoDb

  3. MongoDB balancer timeout med fördröjd replika

  4. Hur ser man eventuella ändringar (ny rad) i mongoDB?