Maintenance en rolling sur un replica set (redémarrage, correctif OS, mise à niveau mineure)
MongoDBReplica SetCommande
// 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 itCe que fait la commande
Donne l'ordre de mise en maintenance des membres un par un, les secondaires d'abord et le primaire en dernier, afin que redémarrages, correctifs OS ou mises à jour des binaires se fassent sans mettre le set hors service.
Quand l'utiliser
Lors des mises à jour OS/noyau planifiées, des mises à niveau de version mineure, des modifications de paramètres mongod ou de la maintenance disque/matérielle.
Attention
N'arrêtez jamais plus d'un membre à la fois ; dans un set de 3 membres, perdre deux membres fait perdre la majorité. Après chaque membre, confirmez l'état SECONDARY et que le retard est résorbé. stepDown provoque une courte interruption des écritures ; assurez-vous que les drivers se reconnectent avec les retryable writes. S'il y a un arbitre, traitez-le dans la même séquence.