Puede agregar miembros a un fragmento 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.
Acerca de esta tarea
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 Si los valores votesypriorityson mayores que cero, esto puede provocar que la mayoría de los miembros con derecho a voto estén conectados, pero no se pueda elegir a ningún miembro principal. Para evitar estas situaciones, considere agregar el nuevo miembro secundario inicialmente conpriority :0yvotes :0. Luego, ejecuters.status()para asegurar que el miembro haya cambiado al estadoSECONDARY. Finalmente, users.reconfig()para actualizar su prioridad y votos.
Antes de comenzar
Para agregar un miembro a un conjunto de réplicas de fragmentos, necesita:
Un conjunto de réplicas de clúster fragmentado activo.
Un nuevo servidor host para el nuevo miembro. Este nuevo servidor host debe ser compatible con su conjunto de datos fragmentados y ser accesible para 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 de directShardOperations puede hacer que su clúster deje de funcionar correctamente y puede causar corrupción de datos. Utilice el rol de directShardOperations solo para fines de mantenimiento o bajo la orientación del soporte de MongoDB. Una vez que haya terminado de realizar las operaciones de mantenimiento, deje de usar el rol de directShardOperations.
Pasos
Preparar el directorio de datos
Prepare el directorio de datos del nuevo miembro utilizando una de las siguientes estrategias:
Permite que el nuevo miembro sincronice automáticamente los datos de un miembro existente. Este proceso lleva tiempo, pero no requiere la intervención del 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.
Copiar manualmente el directorio de datos de un miembro existente. El nuevo miembro se convierte en un miembro secundario y se actualizará al estado actual del conjunto de réplicas. Copiar los datos puede acortar el tiempo que tarda el nuevo miembro en sincronizarse con los demás miembros del conjunto 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 sobre los patrones de implementación de replicación, consulte el documento Arquitecturas de implementación de conjuntos de réplicas.
Inicia la nueva instancia mongod
Especifique el directorio de datos y el nombre del conjunto de réplicas. El siguiente ejemplo especifica el directorio de datos /srv/mongodb/db0 y el conjunto 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 mongod manual.
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
Conéctate al primario del set de réplicas
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.
Utilice para agregar el nuevo miembro al conjunto de rs.add() réplicas
Pase el al método. Por ejemplo, para agregar un miembro en el member configuration document host,mongodb3.example.net ejecute el siguiente comando:
rs.add( { host: "mongodb3.example.net:27017", priority: 0, votes: 0 } )
Asegúrese de que el nuevo miembro haya alcanzado el SECONDARY estado
Para comprobar el estado de los miembros del conjunto de réplicas,rs.status() ejecute:
rs.status()
Próximos pasos
Una vez que el miembro recién agregado haya pasado al SECONDARY estado, use para rs.reconfig() actualizar y del priority votes miembro recién agregado si es necesario.
Advertencia
El
rs.reconfig()método de shell puede forzar la desconexión del servidor principal actual, lo que provoca una elección. Cuando la desconexión del servidor principal se produce, elmongodmétodo cierra todas las conexiones de cliente. Aunque esto suele tardar 10entre y20 segundos, intente realizar 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.
Ejemplo
Si devuelve el documento de configuración rs.conf() de mongodb3.example.net:27017 como el quinto elemento de la matriz, para actualizar su prioridad y members votos 1 a, utilice la siguiente secuencia de operaciones:
var cfg = rs.conf(); cfg.members[4].priority = 1 cfg.members[4].votes = 1 rs.reconfig(cfg)