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 utilizar mongodumpymongorestorecomo estrategia de respaldo para clústeres fragmentados, consulte Realizar una copia de seguridad de un clúster fragmentado autoadministrado con un volcado 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 tras restaurar desde una instantánea del sistema de archivos, MongoDB añade la opción en la
--eseDatabaseKeyRolloverlínea de comandos. Al iniciarse con la--eseDatabaseKeyRolloveropción, lamongodinstancia reutiliza las claves de la base de datos configuradas con elAES256-GCMcifrado y finaliza.
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 el clúster de origen se ejecuta correctamente y es accesible, conecte un shell al miembro principal del conjunto de mongo rs.conf() réplicas en cada conjunto de réplicas. A continuación, ejecute para ver el documento de configuración de la réplica.
Si no puede acceder a uno o más componentes del clúster fragmentado de origen, consulte la documentación interna existente para reconstruir los requisitos de configuración para cada conjunto de réplicas de fragmentos y el conjunto 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 disponible para los datos restaurados. Si el host de destino contiene datos existentes del clúster fragmentado que desea conservar, asegúrese de tener suficiente espacio de almacenamiento tanto para los datos existentes como para los restaurados.
- Requisitos de LVM
- Para las instantáneas de LVM, debe tener al menos un grupo de volúmenes administrados por LVM y un volumen lógico con suficiente espacio libre para los datos de la instantánea extraídos.
- Requisitos de la 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, consulte Instalar MongoDB.
- Apague los procesos en ejecución de MongoDB
Si se restaura a un clúster existente, apague el
mongodproceso o en el host de destino.mongosPara 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, conecte un shellmongoalmongody ejecutedb.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 los
mongodarchivos de registro. Asegúrese de que el usuario que ejecuta tenga permisos de lectura, escritura y ejecución para todos los archivos y subcarpetas de esemongoddirectorio.sudo mkdir /path/to/mongodb/logs sudo chown -R mongodb:mongodb /path/to/mongodb/logs sudo chmod -R 770 /path/to/mongodb/logs Sustituya
/path/to/mongodb/logspor la ruta al directorio de registro que creó. En RHEL/CentOS, Amazon Linux y SUSE, el nombre de usuario predeterminadomongodes.- Crear archivo de configuración
Este procedimiento supone iniciar un con un
mongodarchivode 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 predeterminado
mongodes.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 en cada miembro de cualquier conjunto de réplicas determinado.sharding.clusterRoletiene el mismo valor en cada miembro de 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:
Monte la instantánea de LVM en el host de destino. Los pasos específicos para montar una instantánea de LVM dependen de su configuración.
El siguiente ejemplo supone una instantánea de LVM creada mediante el paso Crear una instantánea del procedimiento Realizar copia de seguridad de una implementación autoadministrada con instantáneas 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 carpeta y archivo.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 una instantánea filtrada por espacio de nombres, especifique la
--restoreopción.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 carpeta y archivo.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 se restaura desde una instantánea filtrada por espacio de nombres, especifique también la
--restoreopción.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 para eliminar db.dropDatabase() la local base de datos:
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 de nombre de host de fragmento o de conjunto de réplicas planificado o completado, actualice los metadatos config.shards en.
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 del fragmento reflejen con precisión el nombre del conjunto de réplicas planificado y la lista de nombres de host para cada fragmento del 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.
Apague el. Descomente o agregue las siguientes opciones del archivo de configuración:mongod
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.
Inicie el con el archivo de configuración mongod 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.
Inicie el conjunto de réplicas utilizando con la configuración rs.initiate() predeterminada.
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 miembro realiza una sincronización inicial para alcanzar al principal. Dependiendo de factores como la cantidad de datos a sincronizar, la topología y el estado de la red, y la potencia de cada equipo host, la sincronización inicial puede tardar un tiempo considerable.
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.
Configure cualquier configuración de replicación adicional necesaria.
El método actualiza rs.reconfig() reconfig() la configuración del conjunto de réplicas según un documento de configuración pasado como parámetro. Debe ejecutar en el miembro principal del conjunto 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 mongod archivos de datos primarios del fragmento.
Selecciona la pestaña que corresponda a tu método de copia de seguridad preferido:
Monte la instantánea de LVM en el host de destino. Los pasos específicos para montar una instantánea de LVM dependen de su configuración.
El siguiente ejemplo supone una instantánea de LVM creada mediante el paso Crear una instantánea del procedimiento Realizar copia de seguridad de una implementación autoadministrada con instantáneas 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 carpeta y archivo.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 carpeta y archivo.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 realiza una restauración manual de una copia de seguridad de Cloud Manager u Ops Manager, debe especificar el parámetro de servidor
disableLogicalSessionCacheRefreshantes del inicio: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 __system rol permite a su titular realizar cualquier acción contra cualquier objeto de la base de datos. Este procedimiento incluye instrucciones para eliminar al 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.
Autenticarse como usuario privilegiado:
db.auth("mySystemUser","<replaceMeWithAStrongPassword>")
Elimina la base de datos local.
Utilice para eliminar db.dropDatabase() la local base de datos:
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.
Emita el siguiente find() método system.version en la colección en la admin base de datos:
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.
Apague el. Descomente o agregue las siguientes opciones del archivo de configuración:mongod
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.
Inicie el con el archivo de configuración mongod 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.
Inicie el conjunto de réplicas utilizando con la configuración rs.initiate() predeterminada.
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 del conjunto de réplicas de fragmentos, inicie en mongod su equipo host. Una vez iniciados correctamente todos los miembros restantes del clúster, conecte un shell al miembro principal mongo del conjunto de réplicas. Desde el principal, utilice el rs.add() método para agregar cada miembro del conjunto de réplicas. Incluya el nombre del conjunto de réplicas como prefijo, seguido del nombre de host y el puerto del mongod proceso del miembro:
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 miembro realiza una sincronización inicial para alcanzar al principal. Dependiendo de factores como la cantidad de datos a sincronizar, la topología y el estado de la red, y la potencia de cada equipo host, la sincronización inicial puede tardar un tiempo considerable.
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.
Configure cualquier configuración de replicación adicional necesaria.
El método actualiza rs.reconfig() reconfig() la configuración del conjunto de réplicas según un documento de configuración pasado como parámetro. Debe ejecutar en el miembro principal del conjunto 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 conjunto de réplicas CSRS o el nombre de host de algún miembro cambió, actualice la mongos configuración del sharding.configDB archivo con la cadena de conexión del servidor de configuración actualizada:
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 la división automática de fragmentos no se realiza. Esto se debe a mejoras en la política de balanceo. Los comandos de división automática aún existen, pero no realizan ninguna operación. En versiones de MongoDB anteriores 6.0.3 a, sh.startBalancer() también habilita la división automática para el clúster fragmentado. |