De belangrijkste functie van een replicaset is het bieden van gegevensredundantie en hoge beschikbaarheid voor uw MongoDB-implementatie. Dat wil zeggen, als het primaire knooppunt in een replicaset om welke reden dan ook uitvalt, zou een secundair knooppunt het onmiddellijk overnemen als het nieuwe primaire knooppunt (gemiddeld binnen ~10 seconden). Zie Replicatie voor meer details over dit onderwerp.
Officiële MongoDB-stuurprogramma's zijn op de hoogte van deze replicaset-verkiezingsgebeurtenis en zouden automatische herverbinding en bewerkingspogingen naar de nieuwe primaire bieden. Vanuit het oogpunt van de app gebeurde er niets aan de databasekant.
Een ander voordeel van het gebruik van een replicaset met meerdere secondaries is de mogelijkheid van upgrade/onderhoud zonder downtime op een voortschrijdende manier. Dit kan worden gedaan door een secundaire offline te halen, er onderhoud aan te doen, vervolgens onderhoud aan de andere secondaries te doen en uiteindelijk de primaire uit te schakelen en er onderhoud aan te doen. Nogmaals, aangezien officiële MongoDB-stuurprogramma's op de hoogte zijn van deze gebeurtenissen, kunt u technisch onderhoud uitvoeren aan een live database met een zeer minimale impact en zonder downtime van de app.
Dit is een andere filosofie dan een monolithische databaseserver, waar er maar één echte grote server is. Hoewel er bepaalde voordelen zijn in een monolithische implementatie (wat weer een andere discussie is :)), werd MongoDB ontworpen als een fouttolerante gedistribueerde database in gedachten. Een direct nadeel van een enkele server is dat de server altijd 100% up moet zijn, anders wordt de app onderbroken. Er is een replicaset ontworpen zodat uw app 100% uptime kan hebben zonder druk uit te oefenen op individuele servers die 100% uptime moeten hebben.
Als bonus mag een replicaset mag in staat zijn om leesschaalbaarheid te bieden door het stuurprogramma in te stellen om te lezen van secundairen (schrijfbewerkingen moeten altijd naar de primaire gaan). Houd er rekening mee dat er een zorgvuldig ontwerp moet zijn als u secundaire leesbewerkingen wilt doen, omdat dit het aspect van hoge beschikbaarheid mogelijk kan verstoren als het wordt misbruikt.
Samengevat kan een replicaset het volgende bieden:
- Hoge beschikbaarheid en fouttolerantie
- Geen downtime-onderhoud
- Gegevensredundantie om uitlezingen te schalen
zonder dat de hardware 100% betrouwbaar hoeft te zijn. Dit is de reden waarom een replicaset sterk wordt aanbevolen bij een productimplementatie.
Zie Replica Set Deployment Architectures voor meer gedetailleerde overwegingen bij de implementatie van replicasets.