18 Konfiguration eines MongoDB Replica Sets

Die Konfiguration eines MongoDB Replica Sets ist essenziell, um Hochverfügbarkeit, Datenintegrität und optimale Leistung zu gewährleisten. Unten finden Sie eine detaillierte Anleitung zur Konfiguration und Verwaltung eines Replica Sets.


18.1 1. Initialisierung des Replica Sets

Verbinden Sie sich mit der mongosh-Shell des geplanten Primärknotens und initialisieren Sie das Replica Set:

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

18.2 2. Hinzufügen weiterer Mitglieder

Fügen Sie nach der Initialisierung weitere Mitglieder hinzu:

rs.add("hostname2:27018")
rs.add("hostname3:27019")

18.3 3. Konfigurationsdokument

Das Konfigurationsdokument steuert die Funktionsweise des Replica Sets. Sie können die aktuelle Konfiguration abrufen:

var cfg = rs.conf()

18.3.1 Wichtige Felder im Konfigurationsdokument


18.4 4. Beispiel-Konfigurationsdokument

Ein Konfigurationsbeispiel für ein Replica Set mit zwei sekundären Knoten und einem Arbiter:

var cfg = {
  _id: "exampleReplicaSet",
  members: [
    { _id: 0, host: "hostname1:27017", priority: 2 },
    { _id: 1, host: "hostname2:27018", priority: 1 },
    { _id: 2, host: "hostname3:27019", arbiterOnly: true }
  ],
  settings: {
    electionTimeoutMillis: 5000,
    heartbeatIntervalMillis: 2000
  }
}

rs.reconfig(cfg)

18.5 5. Arbiter hinzufügen

Ein Arbiter nimmt an Wahlen teil, speichert jedoch keine Daten:

rs.addArb("hostname3:27019")

Arbiters sind sinnvoll, wenn ein ungerades Stimmgewicht im Replica Set benötigt wird.


18.6 6. Lesepräferenzen konfigurieren

MongoDB unterstützt verschiedene Lesepräferenzen, um die Last auf Sekundärknoten zu verteilen:

18.6.1 Beispiel: Lesen bevorzugt von Sekundärknoten

db.getMongo().setReadPref("secondaryPreferred")

18.6.2 Mögliche Lesepräferenzen


18.7 7. Änderungen am Replica Set vornehmen

Abrufen der aktuellen Konfiguration:

var cfg = rs.conf()

18.7.1 Hinzufügen eines neuen Mitglieds

cfg.members.push({ _id: 3, host: "hostname4:27020" })
rs.reconfig(cfg)

18.7.2 Entfernen eines Mitglieds

cfg.members = cfg.members.filter(member => member.host !== "hostname2:27018")
rs.reconfig(cfg)

18.8 8. Überwachung

18.8.1 Status des Replica Sets prüfen

rs.status()

Die Ausgabe enthält: - set: Name des Replica Sets. - myState: Status des Knotens (1 = Primary, 2 = Secondary, etc.). - members: Liste der Mitglieder und deren Status (z. B. PRIMARY, SECONDARY, ARBITER).

18.8.2 Logs prüfen

Verfolgen Sie die Logs, um Probleme zu identifizieren:

tail -f /var/log/mongodb/mongod.log

18.9 9. Wichtige Einstellungen

18.9.1 Wahlprioritäten

Kontrollieren Sie, welches Mitglied bevorzugt als Primary gewählt wird:

cfg.members[1].priority = 0.5
rs.reconfig(cfg)

18.9.2 Timeout-Einstellungen

Passen Sie die Wahlzeit an:

cfg.settings.electionTimeoutMillis = 10000
rs.reconfig(cfg)

18.10 10. Best Practices


Die Konfiguration eines MongoDB Replica Sets ist flexibel und ermöglicht die Anpassung an verschiedene Anforderungen. Eine gute Planung und regelmäßige Überwachung sind entscheidend, um eine robuste und performante Datenbankumgebung zu gewährleisten.