Die Hauptfunktion eines Replikatsatzes besteht darin, Datenredundanz und Hochverfügbarkeit für Ihre MongoDB-Bereitstellung bereitzustellen. Das heißt, wenn der primäre Knoten in einem Replikatsatz aus irgendeinem Grund ausfiel, würde sofort ein sekundärer Knoten als neuer primärer Knoten übernommen (im Durchschnitt innerhalb von etwa 10 Sekunden). Siehe Replikation für weitere Details zu diesem Thema.
Offizielle MongoDB-Treiber sind sich dieses Wahlereignisses für den Replikatsatz bewusst und würden automatische Wiederverbindungs- und Vorgangswiederholungsversuche für die neue Primärdatenbank bereitstellen. Aus Sicht der App ist datenbankseitig nichts passiert.
Ein weiterer Vorteil der Verwendung eines Replica-Sets mit mehreren Secondaries ist die Möglichkeit von fortlaufender Aktualisierung/Wartung ohne Ausfallzeit. Dies kann erreicht werden, indem ein sekundärer Server offline geschaltet wird, Wartungsarbeiten an ihm durchgeführt werden, dann Wartungsarbeiten an den anderen sekundären Servern durchgeführt werden und schließlich der primäre Server heruntergefahren und gewartet wird. Da offizielle MongoDB-Treiber sich dieser Ereignisse bewusst sind, können Sie technisch gesehen Wartungsarbeiten an einer Live-Datenbank mit sehr minimalen Auswirkungen und ohne Ausfallzeiten für die App durchführen.
Dies ist eine andere Philosophie als bei einem monolithischen Datenbankserver, bei dem es nur einen wirklich großen Server gibt. Obwohl eine monolithische Bereitstellung bestimmte Vorzüge hat (was wiederum eine andere Diskussion ist :)), wurde MongoDB als fehlertolerante verteilte Datenbank konzipiert. Ein unmittelbarer Nachteil eines einzelnen Servers besteht darin, dass der Server jederzeit zu 100 % in Betrieb sein muss, da sonst die App unterbrochen wird. Ein Replikatsatz wurde so konzipiert, dass Ihre App zu 100 % verfügbar sein kann, ohne Druck auf einzelne Server auszuüben, die zu 100 % verfügbar sein müssen.
Als Bonus gibt es vielleicht ein Replikat-Set Leseskalierbarkeit bieten, indem der Treiber so eingestellt wird, dass er von sekundären Servern liest (Schreibvorgänge müssen immer an den primären Server gehen). Beachten Sie, dass ein sorgfältiges Design erfolgen sollte, wenn Sie sekundäre Lesevorgänge durchführen möchten, da dies bei Missbrauch möglicherweise den Aspekt der Hochverfügbarkeit beeinträchtigen kann.
Zusammenfassend kann ein Replikatsatz Folgendes bereitstellen:
- Hohe Verfügbarkeit und Fehlertoleranz
- Keine Ausfallzeitwartung
- Datenredundanz zum Skalieren von Lesevorgängen
ohne dass die Hardware 100 % zuverlässig sein muss. Aus diesem Grund wird ein Replikatsatz in einer Produktbereitstellung dringend empfohlen.
Siehe Replica Set Deployment Architectures für detailliertere Überlegungen zur Bereitstellung von Replikatgruppen.