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
/ /

Añadir un nodo a una partición

Puede agregar nodos a una partición existente en un Clúster fragmentado. Es posible que desee agregar un miembro a un fragmento por las mismas razones que a cualquier conjunto de réplicas. Por ejemplo, aumentar el número de miembros proporciona candidatos adicionales para reemplazar un clúster principal en caso de conmutación por error. Además, los miembros adicionales aumentan la redundancia de datos y la disponibilidad del conjunto de réplicas.

Para obtener más información, consulte Arquitecturas de implementación de conjuntos de réplicas.

Antes de MongoDB 5.0, un secundario recién añadido seguía contando como miembro con derecho a voto, aunque no podía realizar lecturas ni convertirse en principal hasta que sus datos fueran consistentes. Si está ejecutando una versión de MongoDB anterior a 5.0 y añade un secundario con su votes y priority ajustes mayores que 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 tales situaciones, considere agregar el nuevo usuario secundario inicialmente con priority :0 y votes :0. Luego, ejecuta rs.status() para asegurar que el nodo haya pasado al estado de SECONDARY. Por último, usa rs.reconfig() para actualizar su prioridad y votos.

Para agregar un nodo a un set de réplicas de particiones, necesitas:

  1. Un set de réplicas de clúster activo.

  2. Un nuevo host servidor para el nuevo nodo. El nuevo servidor host debe ser capaz de admitir tu conjunto de datos particionados y ser accesible por el conjunto de réplicas activo a través de la red.

A partir de MongoDB 8.0, se puede utilizar el rol directShardOperations para realizar operaciones de mantenimiento que requieren ejecutar comandos directamente contra un fragmento.

Advertencia

Ejecutar comandos usando el rol directShardOperations puede hacer que su clúster deje de funcionar correctamente y puede causar corrupción de datos. Utiliza el rol directShardOperations únicamente con fines de mantenimiento o bajo la orientación del soporte de MongoDB. Deja de usar el rol directShardOperations cuando termines de realizar operaciones de mantenimiento.

1

Prepare el directorio de datos del nuevo nodo usando una de las siguientes estrategias:

  • Haz que el nuevo nodo sincronice automáticamente los datos de un nodo existente. Este proceso lleva tiempo, pero no requiere intervención de un administrador.

    Asegúrese de que el directorio de datos del nuevo miembro no contenga datos. El nuevo miembro copiará los datos de un miembro existente.

    Si el nuevo miembro está en un estado de recuperación, debe salir y convertirse en secundario antes de que MongoDB pueda copiar todos los datos como parte del proceso de replicación.

  • Copie manualmente el directorio de datos de un nodo existente. El nuevo nodo se convierte en un secundario y alcanzará el estado actual del set de réplicas. Copiar los datos puede acortar el tiempo que tarda el nuevo nodo en sincronizar con los demás nodos del set de réplicas.

    Asegúrese de poder copiar el directorio de datos al nuevo miembro e iniciar la replicación dentro del plazo permitido por el registro de operaciones. De lo contrario, la nueva instancia deberá realizar una sincronización inicial, que resincroniza completamente los datos, como se describe en Resincronizar un miembro de un conjunto de réplicas autoadministradas.

    Para comprobar el estado actual de los miembros del conjunto de réplicas con respecto al registro de operaciones,rs.printReplicationInfo() utilice.

Para obtener información de fondo sobre los patrones de implementación de la replicación, consulte el documento Arquitecturas de implementación para sets de réplicas.

2

Especifica el directorio de datos y el nombre del set de réplicas. El siguiente ejemplo especifica el directorio de datos /srv/mongodb/db0 y el set de réplicas rs0:

mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<ip address of the mongod host>

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.

Para obtener más información sobre las opciones de configuración, consulte la página del manual mongod.

Tip

Puede especificar el directorio de datos, el nombre del conjunto de réplicas y el enlace de IP en el mongod.conf archivo de configuración e iniciar con el siguiente mongod comando:

mongod --config /etc/mongod.conf
3

Solo puedes agregar miembros mientras estés conectado a la instancia principal. Para conectarte a la instancia principal, usa mongosh. Reemplaza los valores host y port por los valores relevantes para tu implementación:

mongosh --host mongodb0.example.com --port 28015

Si no sabe cuál es el miembro principal, conéctese a cualquier miembro del conjunto de réplicas y emita el db.hello() comando.

4

Pase el member configuration document al método. Por ejemplo, para añadir un nodo en el host mongodb3.example.net, emite el siguiente comando:

rs.add( { host: "mongodb3.example.net:27017", priority: 0, votes: 0 } )
5

Para comprobar el estado de los miembros del conjunto de réplicas, ejecuta rs.status():

rs.status()

Una vez que el nodo recién agregado haya pasado al estado SECONDARY, utiliza rs.reconfig() para actualizar la priority y votes del nuevo nodo, si es necesario.

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.

Si rs.conf() devuelve el documento de configuración de mongodb3.example.net:27017 como el quinto elemento en el members arreglo, para actualizar su prioridad y votos a 1, utiliza la siguiente secuencia de operaciones:

var cfg = rs.conf();
cfg.members[4].priority = 1
cfg.members[4].votes = 1
rs.reconfig(cfg)

Volver

Agregar fragmentos

En esta página