DBAtlas · Atlas für Datenbankbetrieb

Rekonfiguration des Replica Sets nach Verlust der Mehrheit erzwingen (force reconfig)

MongoDBReplica Set

Befehl

// On a surviving member with the most recent optime (runs as a secondary):
rs.status().members.map(m => ({ host: m.name, state: m.stateStr, health: m.health, optime: m.optimeDate }))
cfg = rs.conf()
cfg.members.map((m, i) => ({ i: i, host: m.host }))
// Keep only the reachable members (example: members 0 and 2):
cfg.members = [cfg.members[0], cfg.members[2]]
rs.reconfig(cfg, { force: true })
// Verify the new primary election:
rs.status().members.map(m => ({ host: m.name, state: m.stateStr }))

Was es tut

Baut bei dauerhaftem Verlust der Mehrheit der stimmberechtigten Mitglieder (z. B. ein ganzes Rechenzentrum ist weg) aus den verbliebenen Mitgliedern eine neue Konfiguration, damit das Set wieder einen Primary wählen kann.

Wann einsetzen

Nur im Katastrophenfall: Die Mehrheit kommt nicht zurück und das Set hängt im Nur-Lese-Zustand fest.

Vorsicht

Dies ist das letzte Mittel. Kehren die verlorenen Mitglieder später mit der alten Konfiguration zurück, können Split-Brain und Rollback auftreten; isoliere sie vom Netzwerk und lösche beim Zurückholen ihre Daten und füge sie mit einer Initial Sync hinzu. Wähle das Mitglied mit der neuesten optime; sonst fallen Schreibvorgänge, die auf anderen Mitgliedern nicht majority-committed sind, ins Rollback. Verwende force nicht für routinemäßige Änderungen der Mitgliedschaft.

In DBAtlas öffnen →

Verwandte Einträge