DBAtlas · Atlas für Datenbankbetrieb

Rollierende Wartung eines Replica Sets (Neustart, OS-Patch, Minor-Upgrade)

MongoDBReplica Set

Befehl

// 1) Before starting: all members healthy, low lag, and an oplog window longer than the maintenance
rs.printSecondaryReplicationInfo()
// 2) Clean shutdown on the SECONDARY under maintenance (then OS/binary work, restart with the same config):
db.getSiblingDB("admin").shutdownServer({ timeoutSecs: 60 })
// 3) Wait until the member is SECONDARY and lag has closed, then move to the next secondary:
rs.status().members.map(m => ({ host: m.name, state: m.stateStr, health: m.health }))
// 4) When all secondaries are done, on the PRIMARY: hand over to a secondary that catches up within 30 s
rs.stepDown(120, 30)
// 5) The old primary is now a SECONDARY: apply steps 2 and 3 to it

Was es tut

Gibt die Reihenfolge vor, in der Mitglieder einzeln in Wartung gehen, Secondaries zuerst und der Primary zuletzt, sodass Neustarts, OS-Patches oder Binär-Updates erfolgen, ohne das Set außer Betrieb zu nehmen.

Wann einsetzen

Bei geplanten OS-/Kernel-Updates, Minor-Version-Upgrades, Änderungen von mongod-Parametern oder Platten-/Hardwarewartung.

Vorsicht

Fahre nie mehr als ein Mitglied gleichzeitig herunter; in einem Set mit 3 Mitgliedern geht beim Verlust von zwei die Mehrheit verloren. Bestätige nach jedem Mitglied den Zustand SECONDARY und dass die Verzögerung aufgeholt ist. stepDown verursacht eine kurze Schreibunterbrechung; stelle sicher, dass sich die Treiber mit Retryable Writes neu verbinden. Gibt es einen Arbiter, behandle ihn in derselben Abfolge.

In DBAtlas öffnen →

Verwandte Einträge