Wat is MongoDB-replicatie?
Replicatie verwijst naar het proces om ervoor te zorgen dat dezelfde gegevens beschikbaar zijn op meer dan één Mongo DB-server. Dit is soms nodig om de beschikbaarheid van gegevens te vergroten.
Omdat als uw hoofd-MongoDB-server om welke reden dan ook uitvalt, er geen toegang is tot de gegevens. Maar als u de gegevens met regelmatige tussenpozen naar een andere server hebt laten repliceren, hebt u toegang tot de gegevens van een andere server, zelfs als de primaire server uitvalt.
Een ander doel van replicatie is de mogelijkheid van taakverdeling. Als er veel gebruikers verbinding maken met het systeem, in plaats van dat iedereen verbinding moet maken met één systeem, kunnen gebruikers worden verbonden met meerdere servers zodat er een gelijkmatige verdeling van de belasting is.
In MongoDB zijn meerdere MongDB-servers gegroepeerd in sets die Replica-sets worden genoemd. De replicaset heeft een primaire server die alle schrijfbewerkingen van clients accepteert. Alle andere instanties die hierna aan de set worden toegevoegd, worden de secundaire instanties genoemd die primair voor alle leesbewerkingen kunnen worden gebruikt.
In deze tutorial leer je -
- Replicaset: het eerste lid toevoegen met rs.initiate ()
- Replica Set: een secundaire toevoegen met rs.add ()
- Replica-set: opnieuw configureren of verwijderen met rs.remove ()
- Problemen met replicasets oplossen
Replicaset: het eerste lid toevoegen met rs.initiate ()
Zoals vermeld in de vorige sectie, moeten we eerst een replicaset van MongoDB-instanties maken om replicatie in te schakelen.
Laten we aannemen dat we voor ons voorbeeld 3 servers hebben genaamd ServerA, ServerB en ServerC. In deze configuratie zal ServerA onze primaire server zijn en ServerB en ServerC onze secundaire servers. Onderstaande screenshot geeft er een beter idee van.
Hieronder staan de stappen die moeten worden gevolgd om de replicaset te maken, samen met de toevoeging van het eerste lid aan de set.
Stap 1) Zorg ervoor dat alle mongod.exe-instanties die aan de replicaset worden toegevoegd, op verschillende servers zijn geïnstalleerd. Dit is om ervoor te zorgen dat zelfs als een server uitvalt, de andere beschikbaar zullen zijn en dus andere exemplaren van MongoDB beschikbaar zullen zijn.
Stap 2) Zorg ervoor dat alle mongo.exe-instanties met elkaar kunnen worden verbonden. Voer vanaf ServerA de onderstaande 2 opdrachten uit
mongo -host ServerB -port 27017
mongo -host ServerC -port 27017
Doe hetzelfde op de overige servers.
Stap 3) Start de eerste instantie van mongod.exe met de optie replSet. Deze optie biedt een groepering voor alle servers die deel uitmaken van deze replicaset.
mongo -replSet "Replica1"
Waar "Replica1" de naam is van uw replicaset. U kunt een willekeurige betekenisvolle naam kiezen voor de naam van uw replicaset.
Stap 4) Nu de eerste server aan de replicaset is toegevoegd, is de volgende stap het starten van de replicaset door de volgende opdracht rs.initiate () te geven
Stap 5) Verifieer de replica set door het commando rs.conf () te geven om er zeker van te zijn dat de replica correct is ingesteld
Replica Set: een secundaire toevoegen met rs.add ()
De secundaire servers kunnen aan de replicaset worden toegevoegd door gewoon de opdracht rs.add te gebruiken. Deze opdracht neemt de naam van de secundaire servers over en voegt de servers toe aan de replicatieset.
Stap 1) Stel dat u ServerA, ServerB en ServerC hebt, die onderdeel moeten zijn van uw replicaset en ServerA is gedefinieerd als de primaire server in de replicaset.
Om ServerB en ServerC aan de replicaset toe te voegen, voert u de opdrachten uit
rs.add("ServerB")rs.add("ServerC")
Replica-set: opnieuw configureren of verwijderen met rs.remove ()
Om een server uit de configuratieset te verwijderen, moeten we het "rs.remove" commando gebruiken
Stap 1) Sluit eerst de instantie af die u wilt verwijderen. Dit kan men doen door het commando db.shutdownserver uit de mongo-shell te geven.
Stap 2) Maak verbinding met de primaire server
Stap 3) Gebruik de opdracht rs.remove om de vereiste server uit de replicaset te verwijderen. Dus stel dat als u een replicaset heeft met ServerA, ServerB en ServerC, en u wilt ServerC uit de replicaset verwijderen, u de opdracht geeft
rs.remove("ServerC")
Problemen met replicasets oplossen
De volgende stappen zijn dezelfde manieren waarop u problemen kunt oplossen wanneer u problemen ondervindt bij het gebruik van replicasets.
- Zorg ervoor dat alle mongo.exe-instanties met elkaar kunnen worden verbonden. Stel dat u 3 servers heeft met de naam ServerA, ServerB en ServerC. Voer vanaf server A de onderstaande 2 opdrachten uit
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Voer de opdracht rs.status uit. Deze opdracht geeft de status van de replicaset. Standaard stuurt elk lid berichten naar elkaar die "heartbeat" -berichten worden genoemd, die alleen aangeven dat de server actief is en werkt. Het "status" -commando haalt de status van deze berichten op en laat zien of er problemen zijn met leden in de replicaset.
- Controleer de grootte van de Oplog - De Oplog is een verzameling in MongoDB die de geschiedenis opslaat van schrijfacties in de MongoDB-database. MongoDB gebruikt deze Oplog vervolgens om de schrijfbewerkingen naar de andere leden in de replicaset te repliceren. Om de Oplog te controleren, maakt u verbinding met de vereiste lidinstantie en voert u de opdracht rs.printReplicationInfo uit. Deze opdracht toont de grootte van het logboek en hoe lang het transacties in het logbestand kan bewaren voordat het vol raakt.
Overzicht: