El tutorial está orientado específicamente a MongoDB 6.0. Para versiones anteriores de MongoDB, consulta la versión correspondiente del Manual de MongoDB.
Este procedimiento demuestra la secuencia de apagado e inicio para reiniciar un clúster particionado. Detener o iniciar los componentes de un clúster particionado en un orden diferente puede causar errores de comunicación entre los nodos. Por ejemplo, Los servidores de fragmentos pueden parecer bloqueados si no hay servidores de configuración disponibles.
Importante
Este procedimiento solo debe realizarse durante un periodo de mantenimiento planificado. Durante este período, las aplicaciones deben detener todas las lecturas y guardados en el clúster para prevenir una posible pérdida de datos o la lectura de datos obsoletos.
Desactivar el balanceador
Deshabilitar el balanceador para detener la migración de fragmentos y no realizar ninguna operación de escritura de metadatos hasta que el proceso termine. Si una migración está en curso, el balanceador completará la migración en curso antes de detenerse.
Para deshabilitar el balanceador, conéctese a uno de los clústeres
mongosinstancias y emita el siguiente comando: []1
sh.stopBalancer()
Para comprobar el estado del equilibrador, emita el sh.getBalancerState() comando.
Para obtener más información,consulte Deshabilitar el balanceador.
| [1] | A partir de MongoDB 6.0.3, no se realiza la partición automática de fragmentos. Esto se debe a mejoras en las políticas de equilibrio. Los comandos de división automática siguen existiendo, pero no realizan una operación. Para más información, consulta Cambios en la política de balanceo.En versiones de MongoDB anteriores a la 6.0.3, sh.stopBalancer() también desactiva la división automática para el clúster fragmentado. |
Detener el clúster fragmentado
Detén los enrutadores mongos.
Ejecute db.shutdownServer() desde la base de datos admin en cada enrutador mongos:
use admin db.shutdownServer()
Detener cada conjunto de réplicas de fragmentos.
Ejecuta db.shutdownServer() desde la base de datos admin en cada miembro del conjunto de réplicas de partición para apagar su proceso mongod. Apague todos los secundarios antes de apagar el primario en cada set de réplicas.
Detener los servidores de configuración.
Ejecutar db.shutdownServer() desde la base de datos admin en cada uno de los servidores de configuración para apagar su proceso mongod. Apague todos los miembros secundarios antes de apagar el principal.
Iniciar clúster de fragmentos
Inicie los servidores de configuración.
Al iniciar mongod cada, especifique la configuración mongod de mediante un archivo de configuración o la línea de comandos. Para obtener más información sobre los parámetros de mongod inicio, consulte la página de referencia de.
archivo de configuración
Si utiliza un archivo de configuración, inicie con mongod la --config opción establecida en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Línea de comandos
Si utiliza las opciones de línea de comandos, inicie el mongod con las opciones --configsvr, --replSet, --bind_ip y otras opciones según corresponda a su implementación. Por ejemplo:
mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
Después de iniciar todos los servidores de configuración, conéctate al mongod principal y ejecuta rs.status() para confirmar la salud y disponibilidad de cada miembro de CSRS.
Inicia cada conjunto de réplicas de partición.
Al comenzar cada mongod, especifica los ajustes de mongod utilizando un archivo de configuración o la línea de comandos.
archivo de configuración
Si utiliza un archivo de configuración, inicie con mongod la --config opción establecida en la ruta del archivo de configuración.
mongod --config <path-to-config-file>
Línea de comandos
Si usa la opción de línea de comandos, inicie con mongod las --replSet opciones, --shardsvr y,--bind_ip y otras opciones según corresponda a su implementación. Por ejemplo:
mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>
Después de iniciar todos los miembros de cada fragmento, conéctese a cada fragmento mongod principal y rs.status() ejecute para confirmar el estado y la disponibilidad de cada miembro.
Inicia mongos routers.
Inicie los encaminadores mongos utilizando un archivo de configuración o un parámetro de línea de comandos para especificar los servidores de configuración.
archivo de configuración
Si utilizas un archivo de configuración, inicia el mongos especificando la opción --config y la ruta al archivo de configuración.
mongos --config <path-to-config>
Para obtener más información sobre el archivo de configuración, consultar opciones del archivo de configuración.
Línea de comandos
Si utiliza parámetros de línea de comandos, inicie mongos --configdby--bind_ip especifique, y otras opciones según corresponda a su implementación. Por ejemplo:
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.
mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>
Incluye cualquier otra opción que sea apropiada para tu implementación.
Volver a habilitar el balanceador
Vuelve a habilitar el balanceador para reanudar las migraciones de fragmentos.
Conéctate a una de las instancias mongos del clúster y ejecuta el comando sh.startBalancer(): [2]
sh.startBalancer()
Para comprobar el estado del equilibrador, emita el sh.getBalancerState() comando.
Para obtener más información, consulte Habilitar el balanceador.
| [2] | 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 siguen existiendo, pero no realizan ninguna operación. Para obtener más información, consulte Cambios en la política de balanceo.En versiones de MongoDB anteriores a la 6.0.3, sh.startBalancer() también habilita la división automática para el clúster fragmentado. |
Validar la accesibilidad del clúster
Conectar una mongo shell a uno de los mongos procesos del clúster. Utiliza sh.status() para comprobar el estado general del clúster.
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.
Importante
Para evitar la posible pérdida de datos o la lectura de datos obsoletos, no inicie las lecturas ni escrituras de aplicaciones en el clúster hasta después de confirmar que el clúster se encuentra en buen estado y es accesible.