Este procedimiento restaura un clúster a partir de una snapshot de copia de seguridad existente, como snapshot del administrador de volúmenes lógicos (LVM). La fuente y el destino del clúster deben tener el mismo número de particiones. Para obtener información sobre cómo crear instantáneas de LVM para todos los componentes de un clúster fragmentado, visita Realiza una copia de seguridad de un clúster fragmentado autogestionado con instantáneas del sistema de archivos.
Nota
Para usar mongodump y mongorestore como estrategia de respaldo para clústeres particionados, consulta Realizar una copia de seguridad de un clúster particionado autogestionado con un vaciado de base de datos.
Los clústeres particionados también pueden utilizar uno de los siguientes procesos coordinados de copia de seguridad y restauración, que mantienen las garantías de atomicidad de las transacciones entre particiones:
Considerations
Para los motores de almacenamiento cifrado que utilizan el modo de cifrado AES256-GCM, AES256-GCM requiere que cada proceso use un valor de bloque de contador único con la clave.
Para el motor de almacenamiento cifrado configurado con el cifrado AES256-GCM:
- Restauración desde una copia de seguridad en caliente
- Si restauras desde archivos tomados a través de una copia de seguridad en caliente mientras el
mongodse está ejecutando, MongoDB detecta claves "sucias" al arrancar y rota automáticamente la clave de la base de datos para evitar la reutilización de IV (Initialization Vector).
- Restauración desde una copia de seguridad en frío
Sin embargo, si se restaura desde archivos obtenidos mediante una copia de seguridad "en frío" mientras
mongodno se está ejecutando, MongoDB no detecta claves "sucias" al iniciarse, y la reutilización del IV anula las garantías de confidencialidad e integridad.Para evitar la reutilización de las claves después de restaurar desde una snapshot fría del sistema de archivos, MongoDB añade una nueva opción de línea de comandos
--eseDatabaseKeyRollover. Al iniciarse con la opción--eseDatabaseKeyRollover, la instanciamongodcambia las claves de la base de datos configuradas con el cifradoAES256-GCMy sale.
Antes de comenzar
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.
A. (Opcional) Revisar configuraciones del set de réplicas
Este procedimiento inicia un nuevo set de réplicas para el set de réplicas del servidor de configuración (CSRS) y cada set de réplicas de partición utilizando la configuración por defecto. Para usar una configuración de set de réplicas diferente para tus CSRS y particiones restauradas, debes reconfigurar el(los) set(s) de réplicas.
Si tu clúster de origen está funcionando correctamente y es accesible, conecta un shell mongo al miembro primario del set de réplicas en cada set de réplicas. A continuación, ejecuta rs.conf() para ver el documento de configuración de la réplica.
Si no puedes acceder a uno o más componentes del clúster de origen, consulta cualquier documentación interna existente para reconstruir los requisitos de configuración de cada set de réplicas de partición y del set de réplicas del servidor de configuración.
B. Preparar el host de destino para la restauración
- Requisitos de espacio de almacenamiento
- Asegúrese de que el hardware del host de destino tenga suficiente espacio de almacenamiento abierto para los datos restaurados. Si el host de destino contiene datos existentes de un clúster que desea conservar, asegúrese de tener suficiente almacenamiento tanto para los datos existentes como para los datos de restauración.
- Requisitos de LVM
- Para las snapshots de LVM, debe tener al menos un grupo de volúmenes gestionado por LVM y un volumen lógico con suficiente espacio libre para los datos extraídos de la snapshot.
- Requisitos de versión de MongoDB
Asegúrate de que el host de destino y el host de origen tengan la misma versión del Servidor MongoDB. Para comprobar la versión de MongoDB disponible en una máquina host, ejecute
mongod --versiondesde el terminal o shell.Para obtener la documentación completa sobre la instalación, consulta Instalar MongoDB.
- Apague los procesos en ejecución de MongoDB
Si se está restaurando en un clúster existente, apague el proceso
mongodomongosen el host de destino.Para los hosts que ejecutan
mongos, conecta unamongoshell almongosy ejecutadb.shutdownServer()desde la base de datosadmin:use admin db.shutdownServer() Para los hosts que ejecutan un
mongod, conecta unmongoshell almongody ejecutadb.hello():Si
isWritablePrimaryes falso, elmongodes un miembro secundario de un set de réplicas. Puede apagarse ejecutandodb.shutdownServer()desde la base de datosadmin.Si
isWritablePrimaryes verdadero, elmongodes el primario de un set de réplicas. Cierre primero los miembros secundarios del set de réplicas. Users.status()para identificar a los demás nodos del set de réplicas.El primario automáticamente se reinicia después de detectar que la mayoría de los nodos están desconectados. Después de que baje (
db.hello()devuelveisWritablePrimary: false), puede apagar de manera segura elmongod.
- Preparar Directorio de datos
Crea un directorio en el host de destino para los archivos restaurados de la base de datos. Asegúrate de que el usuario que ejecuta el
mongodtenga permisos de lectura, escritura y ejecución para todos los archivos y subcarpetas en ese directorio:sudo mkdir /path/to/mongodb sudo chown -R mongodb:mongodb /path/to/mongodb sudo chmod -R 770 /path/to/mongodb Sustituye
/path/to/mongodbpor la ruta al directorio de datos que creaste. En RHEL / CentOS, Amazon Linux y SUSE, el nombre de usuario por defecto esmongod.- Preparar directorio de registros
Cree un directorio en el host de destino para las
mongodentradas de registro. Asegúrate de que el usuario que ejecuta elmongodtiene permisos de lectura, guardar y ejecución para todos los archivos y subcarpetas de ese directorio:sudo mkdir /path/to/mongodb/logs sudo chown -R mongodb:mongodb /path/to/mongodb/logs sudo chmod -R 770 /path/to/mongodb/logs Sustituye
/path/to/mongodb/logspor la ruta al directorio de registros que creaste. En RHEL / CentOS, Amazon Linux y SUSE, el nombre de usuario por defecto esmongod.- Crear archivo de configuración
Este procedimiento asume que se inicia un
mongodcon un archivo de configuración.Crea el archivo de configuración en tu ubicación preferida. Asegúrese de que el usuario que ejecuta
mongodtenga permisos de lectura y escritura en el archivo de configuración:sudo touch /path/to/mongod.conf sudo chown mongodb:mongodb /path/to/mongodb/mongod.conf sudo chmod 644 /path/to/mongodb/mongod.conf En RHEL / CentOS, Amazon Linux y SUSE, el nombre de usuario por defecto es
mongod.Abre el archivo de configuración en tu editor de texto preferido y modifícalo según lo requiera tu implementación. De manera alternativa, si tienes acceso al archivo de configuración original de la
mongod, cópialo a la ubicación de tu preferencia en el host de destino.Importante
Valida que tu archivo de configuración incluya la siguiente configuración:
storage.dbPathdebe configurarse al ruta de su directorio de datos preferido.systemLog.pathdebe establecerse en la ruta a su directorio de registros preferidonet.bindIpdebe incluir la dirección IP de la máquina host.replication.replSetNametiene el mismo valor para cada nodo en cualquier conjunto de réplicas determinado.sharding.clusterRoletiene el mismo valor para cada nodo en cualquier conjunto de réplicas determinado.También debe especificar las mismas opciones de inicio para la nueva implementación especificadas en la snapshot.
C. Restaure el conjunto de réplicas del servidor de configuración
Restaure los archivos de datos primarios del CSRS mongod.
Selecciona la pestaña que corresponda a tu método de copia de seguridad preferido:
Montar la instantánea de LVM en la máquina host de destino. Los pasos específicos para montar una snapshot LVM dependen de la configuración de tu LVM.
El siguiente ejemplo asume un snapshot de LVM creado mediante el paso Crear un snapshot en el procedimiento Realizar una copia de seguridad de una implementación autogestionada con snapshots del sistema de archivos.
lvcreate --size 250GB --name mongod-datafiles-snapshot vg0 gzip -d -c mongod-datafiles-snapshot.gz | dd o/dev/vg0/mongod-datafiles-snapshot mount /dev/vg0/mongod-datafiles-snapshot /snap/mongodb Este ejemplo puede no aplicarse a todas las configuraciones posibles de LVM. Consulta la documentación de LVM para tu sistema para obtener una orientación más completa sobre la restauración de LVM.
Copia los archivos de datos
mongoddel montaje del snapshot al directorio de datos creado en B. Prepare the Target Host for Restoration:cp -a /snap/mongodb/path/to/mongodb /path/to/mongodb La opción
-acopia recursivamente el contenido de la ruta de origen a la ruta de destino mientras conserva los permisos de las carpetas y archivos.Comenta u omite las siguientes configuraciones de archivo de configuración:
#replication: # replSetName: myCSRSName #sharding: # clusterRole: configsvr Para iniciar la
mongodusando un archivo de configuración, especifique la opción--configen la línea de comandos especificando la ruta completa al archivo de configuración.mongod --config /path/to/mongodb/mongod.conf Si está restaurando desde un snapshot filtrado por namespace, especifique la opción
--restore.mongod --config /path/to/mongod/mongod.conf --restore Si tienes
mongodconfigurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.Después de que
mongodinicie, conéctate a él usando el shellmongo.
Haz que los archivos de datos almacenados en el medio de copia de seguridad seleccionado estén accesibles en el host. Esto puede requerir montar el volumen de copia de seguridad, abrir la copia de seguridad en una utilidad de software, o utilizar otra herramienta para extraer los datos al disco. Consulta la documentación de tu herramienta de copia de seguridad preferida para obtener instrucciones sobre cómo acceder a los datos contenidos en la copia de seguridad.
Copia los archivos de datos
mongoddesde la ubicación de datos de copia de seguridad hasta el directorio de datos creado en B. Prepare the Target Host for Restoration:cp -a /backup/mongodb/path/to/mongodb /path/to/mongodb La opción
-acopia recursivamente el contenido de la ruta de origen a la ruta de destino mientras conserva los permisos de las carpetas y archivos.Comenta u omite las siguientes configuraciones de archivo de configuración:
#replication: # replSetName: myCSRSName #sharding: # clusterRole: configsvr Para iniciar la
mongodusando un archivo de configuración, especifique la opción--configen la línea de comandos especificando la ruta completa al archivo de configuración.mongod --config /path/to/mongodb/mongod.conf Si restauras desde una namespace-filtered snapshot, también especifica la opción
--restore.mongod --config /path/to/mongod/mongod.conf --restore Nota
Solo Cloud Manager u Ops Manager
Si realiza una restauración manual de una copia de seguridad de Cloud Manager o Ops Manager, debe especificar el parámetro de servidor
disableLogicalSessionCacheRefreshantes de iniciar.mongod --config /path/to/mongodb/mongod.conf \ --setParameter disableLogicalSessionCacheRefresh=true Si tienes
mongodconfigurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.Después de que
mongodinicie, conéctate a él usando el shellmongo.
Elimina la base de datos local.
Utilice db.dropDatabase() para descartar la base de datos local:
use local db.dropDatabase()
Inserte la lista filtrada de archivos en la base de datos local.
Este paso solo es necesario si estás restaurando desde una instantánea filtrada por namespace.
Para cada partición, localice la lista de archivos filtrados con el siguiente formato de nombre: <shardRsID>-filteredFileList.txt. Este archivo contiene una lista de objetos JSON con el siguiente formato:
{ "filename":"file1", "ns":"sampleDb1.sampleCollection1", "uuid": "3b241101-e2bb-4255-8caf-4136c566a962" }
Agrega cada objeto JSON de cada archivo de partición a una nueva colección db.systems.collections_to_restore en tu base de datos local. Puede ignorar las entradas con campos vacíos ns o uuid. Al insertar entradas, el campo uuid debe ser insertado como tipo UUID().
Para cualquier cambio planificado o completado de nombre de host de partición o nombre del set de réplicas, actualizar los metadatos en config.shards.
Puedes omitir este paso si todas las siguientes afirmaciones son verdaderas:
Ningún hostname de máquina host de nodo de partición ha cambiado ni cambiará durante este procedimiento.
Ningún nombre de set de réplicas de partición ha cambiado o cambiará durante este procedimiento.
Emite el siguiente método find() en la colección shards en la base de datos de configuración. Reemplace <shardName> con el nombre de la partición. Por defecto, el nombre de la partición es el nombre de su conjunto de réplicas. Si añadiste la partición usando el comando addShard y especificaste un name personalizado, debes especificar esa name en <shardName>.
use config db.shards.find( { "_id" : "<shardName>" } )
Esta operación devuelve un documento que se asemeja al siguiente:
{ "_id" : "shard1", "host" : "myShardName/alpha.example.net:27018,beta.example.net:27018,charlie.example.net:27018", "state" : 1 }
Importante
El valor _id debe coincidir con el valor shardName en el documento _id : "shardIdentity" en la partición correspondiente. Al restaurar las particiones más tarde en este procedimiento, valide que el campo _id en shards coincida con el valor shardName en la partición.
Utilice el método updateOne() para actualizar la cadena hosts y reflejar el nombre del set de réplicas previsto y la lista de nombres de host para la partición. Por ejemplo, la siguiente operación actualiza la cadena de conexión host para la partición con "_id" : "shard1":
db.shards.updateOne( { "_id" : "shard1" }, { $set : { "host" : "myNewShardName/repl1.example.net:27018,repl2.example.net:27018,repl3.example.net:27018" } } )
Repita este proceso hasta que todos los metadatos de partición reflejen con precisión el nombre previsto del set de réplicas y la lista de hostnames para cada partición en el clúster.
Nota
Si no sabe el nombre de la partición, ejecute el método find() en la colección shards con un documento de filtro vacío {}:
use config db.shards.find({})
Cada documento en el conjunto de resultados representa una partición en el clúster. Para cada documento, revisa el campo host en busca de una cadena de conexión que coincida con la partición en cuestión, es decir, un nombre de set de réplicas coincidente y una lista de nombres de host de nodos. Utiliza el _id de ese documento en lugar de <shardName>.
Reinicie el mongod como un nuevo set de réplicas de un solo nodo.
Apaga el mongod. Descomente o agregue las siguientes opciones del archivo de configuración:
replication: replSetName: myNewCSRSName sharding: clusterRole: configsvr
Si desea cambiar el nombre del set de réplicas, debe actualizar el campo replSetName con el nuevo nombre antes de proceder.
Inicia el mongod con el archivo de configuración actualizado:
mongod --config /path/to/mongodb/mongod.conf
Si tienes mongod configurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.
Después de que mongod inicie, conéctate a él usando el shell mongo.
Iniciar el nuevo set de réplicas.
Inicia el set de réplicas usando rs.initiate() con la configuración por defecto.
rs.initiate()
Una vez que la operación se complete, utilice rs.status() para comprobar que el nodo se convirtió en el primario.
Añadir miembros adicionales al set de réplicas.
Para cada miembro del conjunto de réplicas en el CSRS, inicia el mongod en su máquina host. Una vez que hayas puesto en marcha con éxito todos los nodos restantes del clúster, conecta un shell mongo al nodo primario del set de réplicas. Desde el primario, utilice el método rs.add() para añadir cada nodo del set de réplicas. Incluye el nombre del conjunto de réplicas como prefijo, seguido del hostname y puerto del mongod de los nodos:
rs.add("config2.example.net:27019") rs.add("config3.example.net:27019")
Si desea agregar el nodo con una configuración específica de la réplica member, puede pasar un documento a rs.add() que defina el nombre de host del nodo y la configuración de members que requiera su implementación.
rs.add( { "host" : "config2.example.net:27019", priority: <int>, votes: <int>, tags: <int> } )
Cada nuevo nodo realiza una sincronización inicial para ponerse al día con el primario. Dependiendo de factores como la cantidad de datos a sincronizar, la topología y salud de la red, y la potencia de cada máquina host, la sincronización inicial puede requerir un período prolongado de tiempo para completarse.
El set de réplicas puede elegir un nuevo primario mientras agregas nodos adicionales. Utiliza rs.status() para identificar qué nodo es el primario actual. Solo puedes ejecutar rs.add() desde la primaria.
Configura los ajustes adicionales necesarios para la replicación.
El método rs.reconfig() actualiza la configuración del set de réplicas basándose en un documento de configuración que se pasa como parámetro. Debe ejecutar reconfig() contra el miembro primario del set de réplicas.
Consulta la salida del archivo de configuración original del set de réplicas como se identificó en el paso A. Review Replica Set Configurations y aplica la configuración según sea necesario.
D. Restaurar cada set de réplicas de partición
Restaurar los archivos de datos de la partición primaria mongod.
Selecciona la pestaña que corresponda a tu método de copia de seguridad preferido:
Montar la instantánea de LVM en la máquina host de destino. Los pasos específicos para montar una snapshot LVM dependen de la configuración de tu LVM.
El siguiente ejemplo asume un snapshot de LVM creado mediante el paso Crear un snapshot en el procedimiento Realizar una copia de seguridad de una implementación autogestionada con snapshots del sistema de archivos.
lvcreate --size 250GB --name mongod-datafiles-snapshot vg0 gzip -d -c mongod-datafiles-snapshot.gz | dd o/dev/vg0/mongod-datafiles-snapshot mount /dev/vg0/mongod-datafiles-snapshot /snap/mongodb Este ejemplo puede no aplicarse a todas las configuraciones posibles de LVM. Consulta la documentación de LVM para tu sistema para obtener una orientación más completa sobre la restauración de LVM.
Copia los archivos de datos
mongoddesde el montaje de la snapshot al directorio de datos creado en B. Prepare the Target Host for Restoration:cp -a /snap/mongodb/path/to/mongodb /path/to/mongodb La opción
-acopia recursivamente el contenido de la ruta de origen a la ruta de destino mientras conserva los permisos de las carpetas y archivos.Comenta u omite las siguientes configuraciones de archivo de configuración:
#replication: # replSetName: myShardName #sharding: # clusterRole: shardsvr Para iniciar el
mongodusando un archivo de configuración, especifica la opción--configen la línea de comandos, indicando la ruta completa al archivo de configuración:mongod --config /path/to/mongodb/mongod.conf Si se está restaurando desde un snapshot con un filtro de namespace, especifica la opción
--restore.mongod --config /path/to/mongod/mongod.conf --restore Si tienes
mongodconfigurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.Después de que
mongodinicie, conéctate a él usando el shellmongo.
Haz que los archivos de datos almacenados en el medio de copia de seguridad seleccionado estén accesibles en el host. Esto puede requerir montar el volumen de copia de seguridad, abrir la copia de seguridad en una utilidad de software, o utilizar otra herramienta para extraer los datos al disco. Consulta la documentación de tu herramienta de copia de seguridad preferida para obtener instrucciones sobre cómo acceder a los datos contenidos en la copia de seguridad.
Copia los archivos de datos
mongoddesde la ubicación de datos de copia de seguridad hasta el directorio de datos creado en B. Prepare the Target Host for Restoration:cp -a /backup/mongodb/path/to/mongodb /path/to/mongodb La opción
-acopia recursivamente el contenido de la ruta de origen a la ruta de destino mientras conserva los permisos de las carpetas y archivos.Comenta u omite las siguientes configuraciones de archivo de configuración:
#replication: # replSetName: myShardName #sharding: # clusterRole: shardsvr Para iniciar el
mongodusando un archivo de configuración, especifica la opción--configen la línea de comandos, indicando la ruta completa al archivo de configuración:mongod --config /path/to/mongodb/mongod.conf Nota
Solo Cloud Manager u Ops Manager
Si está realizando una restauración manual de una copia de seguridad de Cloud Manager u Ops Manager, debe especificar el parámetro de servidor
disableLogicalSessionCacheRefreshantes de iniciar:mongod --config /path/to/mongodb/mongod.conf \ --setParameter disableLogicalSessionCacheRefresh=true Si tienes
mongodconfigurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.Después de que
mongodinicie, conéctate a él usando el shellmongo.
Crea un usuario temporal con el __system rol.
Durante este procedimiento, modificará documentos en la colección admin.system.version. Para los clústeres que hacen cumplir la autenticación, solo el rol __system otorga permiso para modificar esta colección. Puede omitir este paso si el clúster no aplica autenticación.
Advertencia
El rol __system otorga a su titular el derecho a realizar cualquier acción contra cualquier objeto en la base de datos. Este procedimiento incluye instrucciones para remover el usuario creado en este paso. No mantenga a este usuario activo más allá del alcance de este procedimiento.
Considera crear este usuario con la clientSource restricción de autenticación configurada para que solo los hosts especificados puedan autenticar como el usuario privilegiado.
Autenticar como usuario con el rol
userAdminen la base de datosadmino eluserAdminAnyDatabaserol:use admin db.auth("myUserAdmin","mySecurePassword") Crea un usuario con el rol
__system:db.createUser( { user: "mySystemUser", pwd: "<replaceMeWithAStrongPassword>", roles: [ "__system" ] } ) Las contraseñas deben ser aleatorias, largas y complejas para garantizar la seguridad del sistema y para prevenir o retrasar el acceso malicioso.
Autentícate como el usuario privilegiado:
db.auth("mySystemUser","<replaceMeWithAStrongPassword>")
Elimina la base de datos local.
Utilice db.dropDatabase() para descartar la base de datos local:
use local db.dropDatabase()
Remover el documento minOpTimeRecovery de la colección admin.system.versions.
Para actualizar los elementos internos del particionado, emite el siguiente método deleteOne() en la colección system.version de la base de datos admin:
use admin db.system.version.deleteOne( { _id: "minOpTimeRecovery" } )
Nota
La colección system.version es una colección interna del sistema. Solo debe modificarlo cuando reciba instrucciones específicas como estas.
Opcional: Para cualquier cambio en el hostname CSRS o en el nombre del set de réplicas, actualiza los metadatos de partición en el documento de identidad de cada partición.
Puedes omitir este paso si todas las siguientes afirmaciones son verdaderas:
Los nombres de host de cualquier host CSRS no cambiaron durante este procedimiento.
El nombre del set de réplicas CSRS no cambió durante este procedimiento.
La colección system.version en la base de datos admin contiene metadatos relacionados con la partición, incluido la cadena de conexión CSRS. Si se cambió el nombre o alguno de los nodos de host del CSRS mientras se restauraba el CSRS, debe actualizar esos metadatos.
Emite el siguiente método find() en la colección system.version en la base de datos admin:
use admin db.system.version.find( {"_id" : "shardIdentity" } )
El método find() devuelve un documento que se asemeja al siguiente:
{ "_id" : "shardIdentity", "clusterId" : ObjectId("2bba123c6eeedcd192b19024"), "shardName" : "shard1", "configsvrConnectionString" : "myCSRSName/alpha.example.net:27019,beta.example.net:27019,charlie.example.net:27019" }
El siguiente updateOne() método actualiza el documento de modo que el string host representa la cadena de conexión CSRS más actual:
db.system.version.updateOne( { "_id" : "shardIdentity" }, { $set : { "configsvrConnectionString" : "myNewCSRSName/config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"} } )
Importante
El valor de shardName debe coincidir con el valor de _id en la colección shards en el CSRS. Valide que los metadatos en la CSRS coincidan con los metadatos de la partición. Consulta el subpaso 3 en la sección C. Restore Config Server Replica Set de este procedimiento para obtener instrucciones sobre cómo ver los metadatos de CSRS.
Reinicie el mongod como un nuevo set de réplicas de un solo nodo.
Apaga el mongod. Descomente o agregue las siguientes opciones del archivo de configuración:
replication: replSetName: myNewShardName sharding: clusterRole: shardsvr
Si desea cambiar el nombre del set de réplicas, debe actualizar el campo replSetName con el nuevo nombre antes de proceder.
Inicia el mongod con el archivo de configuración actualizado:
mongod --config /path/to/mongodb/mongod.conf
Si tienes mongod configurado para ejecutarse como un servicio del sistema, inícialo usando el proceso recomendado para el administrador de servicios del sistema.
Después de que mongod inicie, conéctate a él usando el shell mongo.
Iniciar el nuevo set de réplicas.
Inicia el set de réplicas usando rs.initiate() con la configuración por defecto.
rs.initiate()
Una vez que la operación se complete, utilice rs.status() para comprobar que el nodo se convirtió en el primario.
Añadir miembros adicionales al set de réplicas.
Para cada miembro del set de réplicas en el set de réplicas de la partición, inicia el mongod en su máquina host. Una vez que haya iniciado con éxito todos los miembros restantes del clúster, conecte un mongo shell al miembro primario del set de réplicas. Desde el primario, utiliza el método rs.add() para añadir cada nodo del set de réplicas. Incluye el nombre del set de réplicas como prefijo, seguido del nombre de host y el puerto del proceso mongod del nodo:
rs.add("repl2.example.net:27018") rs.add("repl3.example.net:27018")
Si desea agregar el nodo con una configuración específica de la réplica member, puede pasar un documento a rs.add() que defina el nombre de host del nodo y la configuración de members que requiera su implementación.
rs.add( { "host" : "repl2.example.net:27018", priority: <int>, votes: <int>, tags: <int> } )
Cada nuevo nodo realiza una sincronización inicial para ponerse al día con el primario. Dependiendo de factores como la cantidad de datos a sincronizar, la topología y salud de la red, y la potencia de cada máquina host, la sincronización inicial puede requerir un período prolongado de tiempo para completarse.
El set de réplicas puede elegir un nuevo primario mientras agregas nodos adicionales. Utiliza rs.status() para identificar qué nodo es el primario actual. Solo puedes ejecutar rs.add() desde la primaria.
Configura los ajustes adicionales necesarios para la replicación.
El método rs.reconfig() actualiza la configuración del set de réplicas basándose en un documento de configuración que se pasa como parámetro. Debe ejecutar reconfig() contra el miembro primario del set de réplicas.
Consulta la salida del archivo de configuración original del set de réplicas como se identificó en el paso A. Review Replica Set Configurations y aplica la configuración según sea necesario.
Remueva el usuario temporal con privilegios.
Para los clústeres que aplican la autenticación, se debe remover el usuario privilegiado creado anteriormente en este procedimiento:
Autenticar como usuario con el rol
userAdminen la base de datosadmino eluserAdminAnyDatabaserol:use admin db.auth("myUserAdmin","mySecurePassword") Borrar al usuario privilegiado:
db.removeUser("mySystemUser")
E. Reinicie cada uno mongos
Reinicia cada mongos en el clúster.
mongos --config /path/to/config/mongos.conf
Incluye todas las demás opciones de línea de comandos según sea necesario para tu implementación.
Si el nombre del set de réplicas CSRS o el nombre de host de algún nodo ha cambiado, actualiza la configuración de mongos en el archivo de configuración sharding.configDB con la cadena de conexión actualizada de los servidores de configuración:
sharding: configDB: "myNewCSRSName/config1.example.net:27019,config2.example.net:27019,config3.example.net:27019"
F. Validar la accesibilidad del clúster
Conecta un mongo shell a uno de los mongos procesos del clúster. Utilice sh.status() para verificar el estado general del clúster. Si sh.status() indica que el balanceador no está en funcionamiento, utilizar sh.startBalancer() para reiniciar el balanceador. [1]
Para confirmar que todas las particiones son accesibles y que se están comunicando, inserta datos de prueba en una colección particionada temporal. Confirme que los datos se están dividiendo y migrando entre cada partición de su clúster. Puedes conectar un shell mongo a cada primario de partición y usar db.collection.find() para validar que los datos fueron particionados como se esperaba.
| [1] | A partir de MongoDB 6.0.3, no se realiza la división automática en fragmentos. Esto se debe a mejoras en la política de equilibrio. Los comandos de división automática aún existen, pero no realizan ninguna operación. En las versiones de MongoDB anteriores a 6.0.3, sh.startBalancer() también permite la división automática para el clúster particionado. |