Forzar una reconfiguración del replica set tras perder la mayoría (force reconfig)
MongoDBReplica SetComando
// 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 }))Qué hace
Cuando la mayoría de los miembros con voto se ha perdido de forma permanente (p. ej. ha desaparecido un centro de datos entero), construye una nueva configuración con los miembros supervivientes para que el conjunto pueda volver a elegir un primario.
Cuándo usarlo
Solo en un escenario de desastre: la mayoría no volverá y el conjunto está atascado en solo lectura.
Precaución
Es el último recurso. Si los miembros perdidos vuelven después con la configuración antigua, pueden producirse split-brain y rollback; aíslelos de la red y, al reincorporarlos, borre sus datos y añádalos con una sincronización inicial. Elija el miembro con el optime más reciente; de lo contrario, las escrituras no confirmadas por mayoría en otros miembros caen en rollback. No use force para cambios rutinarios de pertenencia.