consdata.com
Blog techniczny Blog biznesowy Dział HR
EN
mongodb

Czy wiesz, jaka jest minimalna liczba węzłów w MongoDB replica set?

author Jakub Wilczewski
14 października 2024

Aby skorzystać z korzyści, które daje replica set potrzebne są przynajmniej trzy węzły. Warto jednak wyjaśnić dlaczego tak jest. Taka sytuacja jest ściśle powiązana z algorytmem wyboru nowego węzła PRIMARY w replice. W replice MongoDB jeden z węzłów pełni rolę węzła PRIMARY i tylko on obsługuje operacje zapisu. Pozostałe węzły (SECONDARY) odczytują zapisane operacje z operation loga i nanoszą je na swoje zbiory danych.

Wybór nowego węzła PRIMARY następuje w przypadku:

  • dodania nowego węzła do repliki,
  • zainicjowania repliki,
  • działań administracyjnych np. rs.stepDown() lub rs.reconfig(),
  • sytuacji, w której węzły SECONDARY utracą połączenie do węzła PRIMARY.

W powyższych sytuacjach uruchamiany jest algorytm głosowania mający wyłonić nowy węzeł PRIMARY. Algorytm ten mówi, że węzeł może zostać węzłem PRIMARY jeżeli zdobędzie co najmniej (n / 2) + 1 głosów, gdzie n jest aktualną liczbą głosujących węzłów w replice (replika może posiadać do 7 węzłów biorących udział w głosowaniu).

Wybór nowego węzła PRIMARY Źródło: www.mongodb.com - dostęp: 2024-08-12

Rozważmy teraz sytuację repliki zawierającej trzy węzły, w której tracimy węzeł PRIMARY. W takiej sytuacji w replice pozostają dwa węzły głosujące, a więc potrzebne są (2 / 2) + 1 = 2 głosy, aby węzeł przejął rolę PRIMARY.

W przypadku repliki, która miałby mieć tylko dwa węzły, utrata jednego z nich doprowadza do sytuacji, w której wymagane są (1 / 2) + 1 = 1.5 głosy, czyli nie jest możliwy wybór nowego węzła PRIMARY. Takie zachowanie ma sens, gdyż w przypadku braku komunikacji między dwoma węzłami w replice, każdy z węzłów mógłby określić się jako węzeł PRIMARY. Co za tym idzie potrzebujemy co najmniej dwóch węzłów do skutecznego wyboru węzła PRIMARY,a więc jeżeli chcemy zabezpieczyć replikę na wypadek utraty jednej z maszyn potrzebujemy ich co najmniej trzy.

W przypadku, w którym występują ograniczenia sprzętowe i nie jesteśmy w stanie posiadać węzła PRIMARY i dwóch pełnoprawnych, przechowujących dane węzłów SECONDARY możemy zastosować architekturę, w której jeden z węzłów SECONDARY zastępujemy węzłem typu ARBITER. Taki węzeł nadal bierze udział w głosowaniu, ale nie przechowuje danych, może więc być zainstalowany na maszynie o niskich zasobach sprzętowych.

Przydatne linki

  • https://www.mongodb.com/docs/manual/replication/
  • https://www.mongodb.com/docs/manual/core/replica-set-elections/
  • https://www.mongodb.com/docs/manual/core/replica-set-architecture-three-members/
Najnowsze wpisy

  • Dostępność w PDF - dokumenty bez barier
  • Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?
  • Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA

newsletter

techniczny

Zapisz się

Podobne wpisy

post-image
WCAG

Dostępność w PDF - dokumenty bez barier

author
Kacper Hoffman 28 kwi 2025
post-image
angular

Czy wiesz, że z pomocą @starting-style można animować elementy z display: none za pomocą samego CSS?

author
Piotr Tatarski 7 kwi 2025
post-image
angular

Czy wiesz, że w Angular 17 została wprowadzona alternatywa dla *ngSwitch?

author
Dorian Mejer 10 mar 2025
Dołącz do nas

  • SENIOR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 14 900 - 20 590 PLN brutto
    B2B 19 680 - 27 220 PLN netto
  • REGULAR FULLSTACK DEVELOPER (JAVA + ANGULAR) Poznań (hybrydowo) lub zdalnie UoP 11 300 - 15 900 PLN brutto
    B2B 14 950 - 21 000 PLN netto
  • ZOBACZ WSZYSTKIE OGŁOSZENIA

Zapisz się na

newsletter

techniczny

consdata.com
  • Kontakt

    • sales@consdata.com
    • +48 61 41 51 000

  • Biuro

    • K9Office
      Krysiewicza 9/14
      61-825 Poznań
      Polska

  • Rozwiązania

    • Eximee
    • Kouncil
  • Blog Dołącz do nas
Copyright © 2024 Consdata. All rights reserved. Privacy Policy & Cookies
Chcemy używać plików cookie oraz skryptów podmiotów trzecich do polepszania funkcjonowania tej strony Zgadzam się