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.
mongod-Instanz in einem Replica Set wird als
Mitglied bezeichnet.Erstellen Sie ein Datenverzeichnis und starten Sie die erste MongoDB-Instanz:
mkdir -p /data/db1
mongod --port 27017 --dbpath /data/db1 --replSet exampleReplicaSetErstellen Sie ein weiteres Datenverzeichnis und starten Sie die zweite Instanz:
mkdir -p /data/db2
mongod --port 27018 --dbpath /data/db2 --replSet exampleReplicaSetErstellen Sie ein Datenverzeichnis für den Arbiter und starten Sie ihn:
mkdir -p /data/arbiter
mongod --port 27019 --dbpath /data/arbiter --replSet exampleReplicaSetÖffnen Sie die MongoDB-Shell auf Port 27017:
mongosh --port 27017Führen Sie den folgenden Befehl in der Shell aus:
rs.initiate({
_id: "exampleReplicaSet",
members: [
{ _id: 0, host: "localhost:27017" }
]
})Fügen Sie die zweite Instanz und den Arbiter hinzu:
rs.add("localhost:27018")
rs.addArb("localhost:27019")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.
Verwenden Sie einen MongoDB-Client, um eine Verbindung zum Replica Set herzustellen:
mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=exampleReplicaSet"Sie können angeben, ob Leseoperationen vom Primary oder von Secondary Members ausgeführt werden sollen. Beispiel:
Lesen nur vom Primary:
db.getMongo().setReadPref("primary")Lesen von Secondary:
db.getMongo().setReadPref("secondary")