Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/

Reemplaza un servidor de configuración autogestionado

Importante

El siguiente procedimiento se aplica a los servidores de configuración 8.0. Para versiones anteriores de MongoDB, consulte la versión correspondiente del Manual de MongoDB.

Si el set de réplicas del servidor de configuración se vuelve de solo lectura, es decir, no tiene un primario, el clúster no puede admitir operaciones que cambien los metadatos del clúster, como divisiones de fragmentos y migraciones. Aunque no se pueden dividir ni migrar fragmentos, las aplicaciones podrán guardar datos en el clúster.

Si uno de los servidores de configuración no está disponible o no funciona, repárelo o reemplácelo lo antes posible. El siguiente procedimiento reemplaza a un miembro de un servidor de configuración set de réplicas con un nuevo nodo.

El tutorial está orientado específicamente a MongoDB 8.0. Para versiones anteriores de MongoDB, consulta la versión correspondiente del Manual de MongoDB.

Las siguientes restricciones se aplican a una configuración de conjunto de réplicas cuando se utiliza para servidores de configuración:

1

Inicie una instancia de mongod, especificando las opciones --configsvr, --replSet, --bind_ip y otras opciones según corresponda a su implementación.

Advertencia

Antes de vincular la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar habilitar la autenticación y reforzar la infraestructura de red.

mongod --configsvr --replSet <replicaSetName> --bind_ip localhost,<hostname(s)|ip address(es)>
2

Conectar mongosh al primario del conjunto de réplicas del servidor de configuración y use rs.add() para adicionar el nuevo nodo.

Advertencia

Antes de MongoDB 5.0, un nuevo secundario añadido aún cuenta como nodo con derecho a voto incluso aunque no pueda servir lecturas ni convertirse en primario hasta que sus datos sean coherentes. Si tienes una versión de MongoDB anterior a la 5.0 y agregas un secundario con su votes y la configuración de priority mayor a cero, esto puede llevar a una situación en la que la mayoría de los nodos con derecho a voto estén en linea pero no se pueda elegir un primario. Para evitar estas situaciones, considera añadir el nuevo arrendatario secundario, inicialmente, con priority :0 y votes :0. Después, ejecuta rs.status() para asegurar que el nodo haya pasado al estado SECONDARY. Por último, usa rs.reconfig() para actualizar su prioridad y votos.

rs.add( { host: "<hostnameNew>:<portNew>", priority: 0, votes: 0 } )

El proceso de sincronización inicial copia todos los datos de un miembro del conjunto de réplicas del servidor de configuración al nuevo miembro sin reiniciar.

mongos Las instancias reconocen automáticamente el cambio en los miembros del conjunto de réplicas del servidor de configuración sin reiniciar.

3
  1. Asegúrese de que el nuevo miembro haya alcanzado el estado. Para comprobar el estado de los miembros del conjunto de SECONDARY réplicas,rs.status() ejecute:

    rs.status()
  2. Reconfigura el set de réplicas para actualizar los votos y la prioridad del nuevo nodo:

    var cfg = rs.conf();
    cfg.members[n].priority = 1; // Substitute the correct array index for the new member
    cfg.members[n].votes = 1; // Substitute the correct array index for the new member
    rs.reconfig(cfg)

    donde n es el índice del nuevo nodo en el arreglo members.

Advertencia

  • El método de shell rs.reconfig() puede forzar el traspaso del primario actual, lo que provoca una elección. Cuando el primario renuncia, el mongod cierra todas las conexiones de los clientes. Aunque esto generalmente toma entre 10 y 20 segundos, intente hacer estos cambios durante los periodos de mantenimiento programados.

  • Evitar reconfigurar sets de réplicas que contengan miembros de diferentes versiones de MongoDB, ya que las reglas de validación pueden diferir entre versiones de MongoDB.

4

Si se reemplaza al miembro principal, primero se debe retirar al principal antes de apagarlo.

5

Al completar la sincronización inicial del servidor de configuración de reemplazo, desde una sesión mongosh conectada al primario, utiliza rs.remove() para remover el nodo antiguo.

rs.remove("<hostnameOld>:<portOld>")

mongos Las instancias reconocen automáticamente el cambio en los miembros del conjunto de réplicas del servidor de configuración sin reiniciar.

6

Con los servidores de configuración de set de réplicas, las instancias mongos especifican en la --configdb o sharding.configDB Configuración el nombre del set de réplicas del servidor de configuración y al menos uno de los miembros del set de réplicas.

Por lo tanto, si la instancia mongos no especifica el miembro eliminado del conjunto de réplicas en el --configdb o la configuración sharding.configDB, no es necesaria ninguna acción adicional.

Sin embargo, si una instancia mongos especificó el nodo eliminado en el --configdb o en la configuración configDB, se debe realizar una de las siguientes acciones:

  • Actualiza la configuración para la próxima vez que reinicies el mongos, o

  • Modifique la entrada DNS que apunta al sistema que proporcionó el servidor de configuración anterior, de modo que el mismo nombre de host apunte al nuevo servidor de configuración.

Volver

Resharding para agregar y remover particiones

En esta página