Overview
Este tutorial explica cómo agregar un miembro adicional a una cuenta existente. set de réplicas. Para obtener información básica sobre los patrones de implementación de replicación, consulta el documento Arquitecturas de implementación de set de réplicas.
Nodos votantes máximos
Un conjunto de réplicas puede tener un máximo de siete miembros con derecho a voto. Para añadir un miembro a un conjunto de réplicas que ya tiene siete miembros con derecho a voto, debe añadirlo como miembro sin derecho a voto o eliminar un voto de un existing member.
script de inicio
En implementaciones de producción, puedes configurar un script de inicio para gestionar los procesos de los nodos.
Miembros existentes
Puedes utilizar estos procedimientos para agregar nuevos nodos a un set de réplicas existente.
Advertencia
Cada nodo de set de réplicas debe pertenecer a un único set de réplicas. Los nodos de un set de réplicas no pueden pertenecer a más de un set de réplicas.
Restaurar a antiguos miembros
Puede utilizar estos procedimientos para volver a agregar un nodo que fue eliminado.
Si los datos del nodo eliminado son relativamente recientes, el nodo se recupera y alcanza al resto del conjunto de réplicas.
Importante
Evite crear nuevas colecciones replicadas en el nodo eliminado mientras esté en modo autónomo. Si el nodo autónomo se reincorpora al set de réplicas, las operaciones posteriores en la nueva colección producen un error.
archivos de datos
Si tienes una copia de seguridad o un snapshot de un nodo existente, puedes mover los archivos de datos (por ejemplo, el directorio dbPath) a un nuevo sistema y utilizarlos para iniciar rápidamente un nuevo nodo. Los archivos deben ser:
Una copia válida de los archivos de datos de un nodo del mismo set de réplicas. Consulta el documento Respaldar y Restauración una implementación autogestionada con snapshots del sistema de archivos para obtener más información.
Importante
Utiliza siempre snapshots del sistema de archivos para crear una copia de un nodo del set de réplicas existente. No utilices
mongodumpymongorestorepara preparar de datos a un nuevo miembro del set de réplicas.Más reciente que la operación más antigua en el oplog del primario. El nuevo nodo debe poder volverse actual aplicando operaciones del registro oplog del primario.
Asociación de IP
Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer la infraestructura de red.
Los binarios de MongoDB, mongod y mongos, se enlazan a localhost por defecto. Si se establece el ajuste del archivo de configuración net.ipv6 o la opción de línea de comandos --ipv6 para el binario, el binario se vincula además a la dirección IPv6 de localhost.
Por defecto, mongod y mongos que están vinculados a localhost solo aceptan conexiones de clientes que se ejecutan en el mismo ordenador. Este comportamiento de vinculación incluye mongosh y otros nodos del set de réplicas o clúster. Los clientes remotos no pueden conectarse a binarios que están vinculados únicamente a localhost.
Para anular la vinculación por defecto y enlazar a otras direcciones IP, utiliza la configuración del archivo de configuración net.bindIp o la opción de línea de comandos --bind_ip para especificar una lista de nombres de host o direcciones IP.
Advertencia
Por ejemplo, la siguiente instancia de mongod se vincula tanto al localhost como al nombre de host My-Example-Associated-Hostname, que está asociado con la dirección IP 198.51.100.1:
mongod --bind_ip localhost,My-Example-Associated-Hostname
Para conectarse a esta instancia, los clientes remotos deben especificar el nombre de host o su dirección IP asociada 198.51.100.1:
mongosh --host My-Example-Associated-Hostname mongosh --host 198.51.100.1
Importante
Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.
Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.
Requisitos
Un set de réplicas activo.
Un nuevo sistema de MongoDB capaz de admitir tu conjunto de datos, accesible por el set de réplicas activo a través de la red.
De lo contrario, se debe utilizar el tutorial de instalación de MongoDB y los tutoriales Implementar un set de réplicas autogestionado.
Procedimientos
Preparar el directorio de datos
Antes de agregar un nuevo nodo a un set de réplicas existente, prepara el directorio de datos del nuevo nodo usando una de las siguientes estrategias:
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 un nuevo nodo está en un estado recuperando, debe salir y convertirse en secundario antes de que MongoDB pueda copiar todos los datos como parte del proceso de replicación. Este proceso lleva tiempo, pero no requiere la intervención de un administrador.
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 necesario para que el nuevo miembro se actualice.
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.
Utiliza
rs.printReplicationInfo()para verificar el estado actual de los miembros del set de réplicas con respecto al oplog.
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.
Añadir un nodo a un conjunto de réplicas existente
Importante
Para evitar actualizaciones de configuración debido a cambios en las direcciones IP, utilice nombres de host DNS en lugar de direcciones IP. Es particularmente importante usar un nombre de host DNS en lugar de una dirección IP al configurar miembros de set de réplicas o miembros de clústeres particionados.
Utiliza nombres de host en lugar de direcciones IP para configurar clústeres en un horizonte de red dividido. A partir de MongoDB 5.0, los nodos que solo están configurados con una dirección IP no pasan la validación de inicio y no se inician.
Inicie la nueva instancia. Especifique el directorio de datos y el nombre del conjunto de réplicas. El siguiente ejemplo especifica
mongodel/srv/mongodb/db0directorio de datos y elrs0conjunto de réplicas:mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<hostname(s)|ip address(es)> Advertencia
Antes de enlazar a un host que no sea localhost (por ejemplo, Públicamente accesible) dirección IP, asegúrese de que ha protegido su clúster de accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulta la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considera activar la autenticación y fortalecer la infraestructura de red.
Para obtener más información sobre las opciones de configuración, consulte la página del manual
mongod.Nota
Opcional
Puedes especificar el directorio de datos, el nombre del set de réplicas y la vinculación de IP en el archivo de configuración de
mongod.conf, e iniciar elmongodcon el siguiente comando:mongod --config /etc/mongod.conf Conectarse al conjunto de réplicas principal.
Solo puede agregar miembros mientras esté conectado al conjunto de réplicas principal. Si desconoce cuál es el miembro principal, inicie sesión en cualquier miembro del conjunto de réplicas y ejecute el
db.hello()comando.Usa
rs.add()para añadir el nuevo nodo al set de réplicas. Pase elmember configuration documental método. Por ejemplo, para añadir un nodo en el hostmongodb3.example.net, ejecuta el siguiente comando:rs.add( { host: "mongodb3.example.net:27017" } ) 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
votesy la configuración deprioritymayor 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, conpriority :0yvotes :0. Después, ejecutars.status()para asegurar que el nodo haya pasado al estadoSECONDARY. Por último, usars.reconfig()para actualizar su prioridad y votos.