Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Añadir un nodo a una partición

Puede agregar nodos a una partición existente en un clúster particionado. Es posible que desees agregar un nodo a una partición por las mismas razones por las que desearías agregar un nodo a cualquier set de réplicas. Por ejemplo, aumentar el número de nodos proporciona candidatos adicionales para reemplazar un principal en caso de un failover. Los nodos adicionales también incrementan la redundancia de datos y la disponibilidad del set de réplicas.

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

Antes de MongoDB 5.0, un secundario recién añadido aún se considera un nodo con derecho a voto, aunque no pueda servir lecturas ni convertirse en primario hasta que sus datos sean coherentes. Si está ejecutando una versión de MongoDB anterior a la 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.

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 nodo no contenga datos. El nuevo nodo copiará los datos de un nodo existente.

    Si el nuevo nodo está en un estado recuperando, debe salir y convertirse en un 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 nodo y comenzar la replicación dentro de la ventana permitida por el oplog. De lo contrario, la nueva instancia tendrá que realizar una sincronización inicial, que vuelve a sincronizar completamente los datos, como se describe en Volver a sincronizar un nodo de un set de réplicas autogestionado.

    Para comprobar el estado actual de los miembros del conjunto de réplicas respecto al oplog, usa rs.printReplicationInfo().

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

Puedes especificar el directorio de datos, el nombre del set de réplicas y la vinculación de IP en el mongod.conf archivo de configuración, y iniciar el mongod con el siguiente comando:

mongod --config /etc/mongod.conf
3

Solo se pueden añadir nodos cuando estés conectado al primario. Para conectarse con el principal, utilice mongosh. Reemplaza los valores host y port con valores relevantes para tu implementación:

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

Si no sabes qué nodo es el primario, conéctate a cualquier nodo del set de réplicas y emite el comando db.hello().

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 particiones

En esta página