17 Replica Set in MongoDB

Ein Replica Set ist ein grundlegender Mechanismus in MongoDB, der Hochverfügbarkeit und Datenredundanz ermöglicht. Es besteht aus mehreren mongod-Instanzen, die synchronisiert werden, um dieselben Daten beizubehalten. Hier die wichtigsten Konzepte, Begriffe und ein praktisches Beispiel zur Einrichtung eines Replica Sets.


17.1 Grundlagen und Begriffe

17.1.1 Replica Set Member

17.1.2 Primary Member

17.1.3 Secondary Member

17.1.4 Oplog (Operationslog)

17.1.5 Arbiter

17.1.6 Election (Wahlen)

17.1.7 Lesepräferenzen


17.2 Hands On: Einrichtung eines Replica Sets

17.2.1 Voraussetzungen


17.2.2 Schritt 1: Starten der Instanzen

17.2.2.1 Instanz 1 (Port 27017)

Erstellen Sie ein Datenverzeichnis und starten Sie die erste MongoDB-Instanz:

mkdir -p /data/db1
mongod --port 27017 --dbpath /data/db1 --replSet exampleReplicaSet

17.2.2.2 Instanz 2 (Port 27018)

Erstellen Sie ein weiteres Datenverzeichnis und starten Sie die zweite Instanz:

mkdir -p /data/db2
mongod --port 27018 --dbpath /data/db2 --replSet exampleReplicaSet

17.2.2.3 Arbiter (Port 27019)

Erstellen Sie ein Datenverzeichnis für den Arbiter und starten Sie ihn:

mkdir -p /data/arbiter
mongod --port 27019 --dbpath /data/arbiter --replSet exampleReplicaSet

17.2.3 Schritt 2: Konfiguration des Replica Sets

17.2.3.1 Verbindung zur ersten Instanz

Öffnen Sie die MongoDB-Shell auf Port 27017:

mongosh --port 27017

17.2.3.2 Initialisierung des Replica Sets

Führen Sie den folgenden Befehl in der Shell aus:

rs.initiate({
  _id: "exampleReplicaSet",
  members: [
    { _id: 0, host: "localhost:27017" }
  ]
})

17.2.3.3 Hinzufügen weiterer Mitglieder

Fügen Sie die zweite Instanz und den Arbiter hinzu:

rs.add("localhost:27018")
rs.addArb("localhost:27019")

17.2.4 Schritt 3: Überprüfung

17.2.4.1 Status des Replica Sets

Prüfen Sie den Zustand des Replica Sets mit:

rs.status()

Die Ausgabe enthält: - members: Details zu allen Mitgliedern (z. B. Status, Rolle). - myState: Zeigt an, ob die aktuelle Instanz Primary (1) oder Secondary (2) ist. - syncSourceHost: Gibt die Quelle der Synchronisation an.


17.3 Verwendung des Replica Sets

17.3.1 Verbindung mit dem Replica Set

Verwenden Sie einen MongoDB-Client, um eine Verbindung zum Replica Set herzustellen:

mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=exampleReplicaSet"

17.3.2 Lesepräferenzen konfigurieren

Sie können angeben, ob Leseoperationen vom Primary oder von Secondary Members ausgeführt werden sollen. Beispiel:


17.4 Vorteile eines Replica Sets