Was ist MongoDB-Replikation?
Die Replikation bezieht sich auf den Prozess, bei dem sichergestellt wird, dass dieselben Daten auf mehr als einem Mongo DB-Server verfügbar sind. Dies ist manchmal erforderlich, um die Datenverfügbarkeit zu erhöhen.
Denn wenn Ihr MongoDB-Hauptserver aus irgendeinem Grund ausfällt, gibt es keinen Zugriff auf die Daten. Wenn Sie die Daten jedoch in regelmäßigen Abständen auf einen anderen Server replizieren lassen, können Sie auch dann auf die Daten von einem anderen Server zugreifen, wenn der Primärserver ausfällt.
Ein weiterer Zweck der Replikation ist die Möglichkeit des Lastausgleichs. Wenn sich viele Benutzer mit dem System verbinden, können Benutzer mit mehreren Servern verbunden werden, anstatt dass jeder eine Verbindung zu einem System herstellt, sodass die Last gleichmäßig verteilt wird.
In MongoDB sind mehrere MongDB-Server in Gruppen zusammengefasst, die als Replikatsätze bezeichnet werden. Das Replikatset verfügt über einen Primärserver, der alle Schreibvorgänge von Clients akzeptiert. Alle anderen Instanzen, die danach zum Satz hinzugefügt werden, werden als sekundäre Instanzen bezeichnet, die hauptsächlich für alle Lesevorgänge verwendet werden können.
In diesem Tutorial lernen Sie -
- Replikatsatz: Hinzufügen des ersten Mitglieds mit rs.initiate ()
- Replikatsatz: Hinzufügen eines Sekundärs mit rs.add ()
- Replikatsatz: Neukonfigurieren oder Entfernen mit rs.remove ()
- Fehlerbehebung bei Replikatsätzen
Replikatsatz: Hinzufügen des ersten Mitglieds mit rs.initiate ()
Wie im vorherigen Abschnitt erwähnt, müssen wir zum Aktivieren der Replikation zunächst einen Replikatsatz von MongoDB-Instanzen erstellen.
Nehmen wir an, wir haben in unserem Beispiel drei Server mit den Namen ServerA, ServerB und ServerC. In dieser Konfiguration ist ServerA unser Primärserver und ServerB und ServerC sind unsere Sekundärserver. Der folgende Screenshot gibt eine bessere Vorstellung davon.
Im Folgenden sind die Schritte aufgeführt, die zum Erstellen des Replikatsatzes sowie zum Hinzufügen des ersten Mitglieds zum Satz ausgeführt werden müssen.
Schritt 1) Stellen Sie sicher, dass alle mongod.exe-Instanzen, die dem Replikatsatz hinzugefügt werden, auf verschiedenen Servern installiert sind. Dies soll sicherstellen, dass auch wenn ein Server ausfällt, die anderen verfügbar sind und somit andere Instanzen von MongoDB verfügbar sind.
Schritt 2) Stellen Sie sicher, dass alle mongo.exe-Instanzen eine Verbindung miteinander herstellen können. Geben Sie auf ServerA die folgenden 2 Befehle aus
mongo -host ServerB -port 27017
mongo -host ServerC -port 27017
Machen Sie dasselbe auf den verbleibenden Servern.
Schritt 3) Starten Sie die erste mongod.exe-Instanz mit der Option replSet. Diese Option bietet eine Gruppierung für alle Server, die Teil dieses Replikatsatzes sind.
mongo -replSet "Replica1"
Wobei "Replica1" der Name Ihres Replikatsatzes ist. Sie können einen beliebigen aussagekräftigen Namen für den Namen Ihres Replikatsatzes auswählen.
Schritt 4) Nachdem der erste Server zum Replikatsatz hinzugefügt wurde, besteht der nächste Schritt darin, den Replikatsatz durch Ausgeben des folgenden Befehls rs.initiate () zu initiieren.
Schritt 5) Überprüfen Sie den Replikatsatz, indem Sie den Befehl rs.conf () eingeben, um sicherzustellen, dass der Replikatsatz ordnungsgemäß eingerichtet ist
Replikatsatz: Hinzufügen eines Sekundärs mit rs.add ()
Die sekundären Server können mit dem Befehl rs.add zum Replikatsatz hinzugefügt werden. Dieser Befehl nimmt den Namen der sekundären Server auf und fügt die Server dem Replikationssatz hinzu.
Schritt 1) Angenommen, Sie haben ServerA, ServerB und ServerC, die Teil Ihres Replikatsatzes sein müssen, und ServerA ist als primärer Server im Replikatsatz definiert.
Um ServerB und ServerC zum Replikatsatz hinzuzufügen, geben Sie die Befehle aus
rs.add("ServerB")rs.add("ServerC")
Replikatsatz: Neukonfigurieren oder Entfernen mit rs.remove ()
Um einen Server aus dem Konfigurationssatz zu entfernen, müssen Sie den Befehl "rs.remove" verwenden
Schritt 1) Führen Sie zuerst ein Herunterfahren der Instanz durch, die Sie entfernen möchten. Sie können dies tun, indem Sie den Befehl db.shutdownserver über die Mongo-Shell ausgeben.
Schritt 2) Stellen Sie eine Verbindung zum Primärserver her
Schritt 3) Verwenden Sie den Befehl rs.remove, um den erforderlichen Server aus dem Replikatsatz zu entfernen. Angenommen, Sie haben einen Replikatsatz mit ServerA, ServerB und ServerC und möchten ServerC aus dem Replikatsatz entfernen. Geben Sie den Befehl aus
rs.remove("ServerC")
Fehlerbehebung bei Replikatsätzen
Die folgenden Schritte sind die gleichen Methoden zur Fehlerbehebung, wenn Probleme bei der Verwendung von Replikatsätzen auftreten.
- Stellen Sie sicher, dass alle mongo.exe-Instanzen eine Verbindung miteinander herstellen können. Angenommen, Sie haben 3 Server mit den Namen ServerA, ServerB und ServerC. Geben Sie auf Server A die folgenden 2 Befehle aus
mongo -host ServerB -port 27017mongo -host ServerC -port 27017
- Führen Sie den Befehl rs.status aus. Dieser Befehl gibt den Status des Replikatsatzes an. Standardmäßig sendet jedes Mitglied Nachrichten aneinander, die als "Heartbeat" -Nachrichten bezeichnet werden. Dies zeigt lediglich an, dass der Server aktiv ist und funktioniert. Der Befehl "status" ruft den Status dieser Nachrichten ab und zeigt an, ob Probleme mit Mitgliedern im Replikatsatz vorliegen.
- Überprüfen der Größe des Oplogs - Das Oplog ist eine Sammlung in MongoDB, in der der Verlauf der Schreibvorgänge in der MongoDB-Datenbank gespeichert wird. MongoDB verwendet dann dieses Oplog, um die Schreibvorgänge auf die anderen Mitglieder im Replikatsatz zu replizieren. Stellen Sie zum Überprüfen des Oplogs eine Verbindung zur erforderlichen Mitgliedsinstanz her und führen Sie den Befehl rs.printReplicationInfo aus. Dieser Befehl zeigt die Größe des Protokolls an und wie lange es Transaktionen in seiner Protokolldatei speichern kann, bevor es voll wird.
Zusammenfassung: