A partir de MongoDB 8.0, puedes configurar un servidor de configuración para almacenar los datos de tu aplicación, además de los habituales clúster particionado metadata. Un servidor de configuración que almacena datos de aplicaciones se denomina partición de configuración o servidor de configuración incrustado.
Convertir tu set de réplicas en un clúster con una partición de configuración incrustada puede reducir:
El número de nodos requeridos en su implementación.
Complejidad para mantener clústeres de una sola partición.
Acerca de esta tarea
A partir de MongoDB 8.3, puedes convertir un set de réplicas directamente en un clúster con una configuración de partición incrustada.
Las versiones anteriores requieren que primero conviertas el replica set en un clúster con un replica set de servidor de configuración dedicado, y luego lo conviertas en uno con una partición de configuración incrustada.
Control de acceso
Si el control de acceso está habilitado, el
transitionFromDedicatedConfigServer comando requiere la acción de autorización transitionFromDedicatedConfigServer para el clúster.
El rol clusterManager tiene la acción de autorización transitionFromDedicatedConfigServer y puede asignarse a un usuario.
Antes de comenzar
A partir de MongoDB 8.3, los conjuntos de réplicas que anteriormente eran clusters fragmentados no se pueden volver a convertir en conjuntos de réplicas.
La conversión de un clúster fragmentado en un conjunto de réplicas preserva los metadatos de particionado de su implementación anterior, incluido un document de identidad de partición, lo que impide que vuelva a convertirse en un clúster fragmentado. Si intentas una reconversión autogestionada a un clúster particionado, MongoDB devolverá un error.
Para convertir estos sets de réplicas en clústeres fragmentados, contacta con el soporte técnico.
Pasos
El siguiente ejemplo convierte un set de réplicas autoadministrado en una partición de configuración que contiene datos de usuario preexistentes del set de réplicas.
Pon el set de réplicas en modo mantenimiento.
Realice un reinicio en secuencia en el set de réplicas. Inicia cada nodo como un servidor de configuración en modo de mantenimiento:
Detén cada nodo, empezando por los secundarios. Para apagar un servidor, utiliza el método
db.shutdownServer().db.shutdownServer() Reinicie el nodo como una partición de configuración en modo de mantenimiento.
mongod --config /etc/mongodb.conf --configsvr \ --replicaSetConfigShardMaintenanceMode \ --configsvr- Inicie la instancia
mongodcomo un servidor de configuración. --replicaSetConfigShardMaintenanceMode- Activa el modo de mantenimiento de la partición de configuración, el cual desactiva algunas comprobaciones de inicio y permite convertir un servidor en una partición de configuración incrustada.
Espere a que el nodo vuelva a unirse al set de réplicas antes de reiniciar el siguiente.
Busca el nodo primario.
Utiliza el método rs.status() para identificar el nuevo nodo principal. Si tienes un set de réplicas grande, usa el método db.aggregate() para acotar tu búsqueda.
db.aggregate( [ { $documents: rs.status().members }, { $match: { stateStr: "PRIMARY" } }, { $project: { _id: 1, name: 1 } ] )
[ { _id: 3, name: "192.0.2.3:27017" } ]
Convierta el primario en una partición de configuración.
Conéctese al nodo primario y reconfigúrelo para que funcione como una partición de configuración incorporada:
Utiliza el método
rs.conf()para obtener la configuración actual y almacenarla en una variable:var conf = rs.conf() Establecer el campo
configsvr:conf.configsvr = true Incremente el campo
version:conf.version += 1 Vuelva a configurar el nodo:
rs.reconfig(conf) Espere a que las instancias secundarias repliquen el cambio. Puedes comprobar el estado ejecutando un pipeline de agregación en los documentos de los nodos:
db.aggregate( [ { $documents: rs.status().members }, { $group: { _id: null, allConfigSvr: { $min: { $eq: ["$configsvr", true] } } } } ] ) { _id: null, allConfigSvr: true } Cuando
allConfigSvrmuestratrue, esto indica que la reconfiguración se ha propagado a todos los nodos del clúster.
Reiniciar el clúster.
Realiza una actualización progresiva para reiniciar el set de réplicas como servidor de configuración:
Detén cada nodo, empezando por los secundarios. Para apagar un servidor, utiliza el método
db.shutdownServer().db.shutdownServer() Reinicie el nodo como un servidor de configuración, que ya no esté en modo de mantenimiento:
mongod --config /etc/mongodb.conf --configsvr
Inicie el router.
Iniciar el enrutador mongos:
mongos --config /etc/mongodb.conf
Transición del servidor de configuración a una partición de configuración incrustada.
Conéctate a mongos y ejecuta el comando transitionFromDedicatedConfigServer para añadir la partición de configuración al cluster.
db.adminCommand( { transitionFromDedidcatedConfigServer: 1 } )
Dirige la aplicación hacia el router.
Actualiza tu aplicación para conectarte al router mongos en lugar de los miembros del conjunto de réplicas.