MongoDB Replicatie: hoe te creëren MongoDB Replica set
⚡ Slimme samenvatting
MongoDB Replicatie zorgt ervoor dat identieke gegevens op meer dan één exemplaar bewaard blijven. MongoDB server, die bescherming biedt tegen serveruitval en load balancing mogelijk maakt. Gegroepeerd MongoDB De instanties vormen een replica-set, waarbij één primaire instantie schrijfbewerkingen accepteert en secundaire leden leesbewerkingen en failover afhandelen.
Wat is MongoDB Replicatie?
Replicatie wordt omschreven als het proces waarbij ervoor wordt gezorgd dat dezelfde gegevens op meer dan één systeem beschikbaar zijn. MongoDB Server. Dit is soms nodig om de beschikbaarheid van gegevens te vergroten.
Want als je hoofd MongoDB De server valt om welke reden dan ook uit, er is geen toegang tot de gegevens. Maar als u de gegevens met regelmatige tussenpozen naar een andere server laat repliceren, heeft u toegang tot de gegevens vanaf 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, kunnen gebruikers in plaats van dat iedereen verbinding maakt met één systeem, met meerdere servers worden verbonden, zodat de belasting gelijkmatig wordt verdeeld.
In MongoDB, meerdere MongoDB Servers worden gegroepeerd in sets die replica-sets worden genoemd. Elke replica-set heeft een primaire server die alle schrijfbewerkingen van clients afhandelt. Alle andere instanties die na deze primaire server aan de set worden toegevoegd, worden secundaire instanties genoemd en kunnen primair worden gebruikt voor alle leesbewerkingen.
Hoe u een replicaset kunt maken MongoDB Het eerste lid toevoegen met rs.initiate()
Zoals vermeld in de vorige sectie, moeten we, om replicatie mogelijk te maken, eerst een replicaset maken van MongoDB instanties.
Laten we voor ons voorbeeld aannemen dat we 3 servers hebben, genaamd ServerA, ServerB en ServerC. In deze configuratie is ServerA onze primaire server en ServerB en ServerC onze secundaire servers. De onderstaande schermafbeelding geeft dit beter weer.
Hieronder staan de stappen die moeten worden gevolgd voor het maken van de MongoDB replicaset samen met de toevoeging van het eerste lid aan de set.
Stap 1) Zorg ervoor dat alle mongod.exe-instanties zijn toegevoegd.
Zorg ervoor dat alle mongod.exe-instanties die aan de replicaset worden toegevoegd, op verschillende servers zijn geïnstalleerd. Dit zorgt ervoor dat, zelfs als één server uitvalt, de andere servers beschikbaar blijven en dus ook andere instanties van mongod.exe. MongoDB zal beschikbaar zijn.
Stap 2) Alle mongo.exe-instanties maken verbinding met elkaar.
Zorg ervoor dat alle exemplaren van mongo.exe met elkaar kunnen verbinden. Geef vanaf ServerA de onderstaande twee opdrachten.
mongo --host ServerB --port 27017 mongo --host ServerC --port 27017
Doe hetzelfde vanaf de overige servers.
Stap 3) Start de eerste mongod.exe-instantie
Start de eerste mongod.exe-instantie met de replSet-optie. Deze optie biedt een groepping voor alle servers die deel uitmaken van deze replica-set.
mongo --replSet "Replica1"
Waarbij “Replica1” de naam is van uw replicaset. U kunt elke betekenisvolle naam kiezen voor de naam van uw replicaset.
Stap 4) De eerste server wordt toegevoegd aan de replicaset.
Nu de eerste server aan de replicaset is toegevoegd, is de volgende stap het initialiseren van de replicaset door het volgende commando uit te voeren: rs.initiate().
Stap 5) Controleer de replica-set
Controleer de replicaset door het commando rs.conf() uit te voeren om er zeker van te zijn dat de replicaset correct is ingesteld.
Replicaset: een secundaire toevoegen met rs.add()
De secundaire servers kunnen aan de replicaset worden toegevoegd door simpelweg de opdracht rs.add te gebruiken. Met deze opdracht wordt de naam van de secundaire servers overgenomen en worden de servers aan de replicatieset toegevoegd.
Stap 1) Stel dat u ServerA, ServerB en ServerC hebt, die deel moeten uitmaken van uw replica-set, en ServerA is gedefinieerd als de primaire server in de replica-set.
Om ServerB en ServerC aan de replicaset toe te voegen, gebruikt u de volgende opdrachten:
rs.add("ServerB") rs.add("ServerC")
Replicaset: opnieuw configureren of verwijderen met rs.remove()
Om een server uit de configuratieset te verwijderen, moeten we het commando "rs.remove" gebruiken.
Stap 1) Sluit eerst de instantie af die u wilt verwijderen. Dit kunt u doen door het commando `db.shutdownServer` uit te voeren in de MongoDB-shell.
Stap 2) Maak verbinding met de primaire server.
Stap 3) Gebruik de opdracht rs.remove om de gewenste server uit de replicaset te verwijderen. Stel dat u een replicaset hebt met ServerA, ServerB en ServerC, en u wilt ServerC uit de replicaset verwijderen, dan voert u de volgende opdracht uit:
rs.remove("ServerC")
Problemen met replicasets oplossen
Hieronder volgen dezelfde methoden om problemen op te lossen die zich kunnen voordoen bij het gebruik van replica sets.
- Zorg ervoor dat alle mongo.exe-instanties met elkaar verbinding kunnen maken. Stel dat u 3 servers hebt, genaamd ServerA, ServerB en ServerC. Voer vanaf ServerA de volgende 2 opdrachten uit:
mongo --host ServerB --port 27017 mongo --host ServerC --port 27017
- Voer de opdracht `rs.status` uit. Deze opdracht geeft de status van de replicaset weer. Standaard stuurt elk lid berichten naar elkaar, zogenaamde "heartbeat"-berichten, die alleen aangeven dat de server actief is en werkt. De opdracht `status` haalt de status van deze berichten op en laat zien of er problemen zijn met leden van de replicaset.
- Controleer de grootte van de Oplog. De Oplog is een verzameling in MongoDB waarin de geschiedenis wordt opgeslagen van schrijfbewerkingen die zijn uitgevoerd naar de MongoDB database. MongoDB gebruikt vervolgens deze Oplog om de schrijfbewerkingen naar de andere leden in de replicaset te repliceren. Om de Oplog te controleren, maakt u verbinding met de vereiste ledeninstantie en voert u de opdracht rs.printReplicationInfo uit. Deze opdracht toont de grootte van het logbestand en hoe lang het transacties in het logbestand kan bewaren voordat het vol raakt.


