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.
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" }
]
})_id: Der Name des Replica Sets,
eindeutig in der Konfiguration.members: Eine Liste von Mitgliedern
mit eindeutigen IDs und Hostinformationen.Fügen Sie nach der Initialisierung weitere Mitglieder hinzu:
rs.add("hostname2:27018")
rs.add("hostname3:27019")Das Konfigurationsdokument steuert die Funktionsweise des Replica Sets. Sie können die aktuelle Konfiguration abrufen:
var cfg = rs.conf()_id: Name des Replica Sets.members: Enthält Konfigurationsdetails
für jedes Mitglied.
host: Hostname und Port.arbiterOnly: true, wenn
das Mitglied ein Arbiter ist.priority: Priorität des Mitglieds bei
Wahlen.hidden: true, wenn das
Mitglied nicht für Leseoperationen verwendet werden soll.settings: Globale Einstellungen wie
Wahl-Timeouts und Heartbeat-Intervalle.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)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.
MongoDB unterstützt verschiedene Lesepräferenzen, um die Last auf Sekundärknoten zu verteilen:
db.getMongo().setReadPref("secondaryPreferred")primary: Lesen nur vom
Primärknoten.secondary: Lesen nur von
Sekundärknoten.primaryPreferred: Bevorzugt
Primärknoten, aber Sekundärknoten, wenn der Primary nicht verfügbar
ist.secondaryPreferred: Bevorzugt
Sekundärknoten, aber Fallback auf Primary.nearest: Lesen vom nächstgelegenen
Mitglied basierend auf Latenz.Abrufen der aktuellen Konfiguration:
var cfg = rs.conf()cfg.members.push({ _id: 3, host: "hostname4:27020" })
rs.reconfig(cfg)cfg.members = cfg.members.filter(member => member.host !== "hostname2:27018")
rs.reconfig(cfg)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).
Verfolgen Sie die Logs, um Probleme zu identifizieren:
tail -f /var/log/mongodb/mongod.logKontrollieren Sie, welches Mitglied bevorzugt als Primary gewählt wird:
cfg.members[1].priority = 0.5
rs.reconfig(cfg)Passen Sie die Wahlzeit an:
cfg.settings.electionTimeoutMillis = 10000
rs.reconfig(cfg)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.