Docs Menu
Docs Home
/

Reiniciar un clúster fragmentado autogestionado

Este tutorial es específico para MongoDB 8.0. Para versiones anteriores de MongoDB, consulte la versión correspondiente del Manual de MongoDB.

Este procedimiento muestra la secuencia de apagado e inicio para reiniciar un clúster fragmentado. Detener o iniciar los componentes de un clúster fragmentado en un orden diferente puede causar errores de comunicación entre los miembros. 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 período de mantenimiento planificado. Durante este período, las aplicaciones deben detener todas las lecturas y escrituras en el clúster para evitar la posible pérdida de datos o la lectura de datos obsoletos.

A partir de MongoDB 8.0, puedes usar el directShardOperations Función para realizar operaciones de mantenimiento que requieren ejecutar comandos directamente contra un fragmento.

Advertencia

Ejecutar comandos usando el rol de directShardOperations puede hacer que su clúster deje de funcionar correctamente y puede causar corrupción de datos. Utilice el rol de directShardOperations solo para fines de mantenimiento o bajo la orientación del soporte de MongoDB. Una vez que haya terminado de realizar las operaciones de mantenimiento, deje de usar el rol de directShardOperations.

Desactive el balanceador para detener la migración de fragmentos y no realizar ninguna operación de escritura de metadatos hasta que finalice el proceso. Si hay una migración en curso, el balanceador la completará antes de detenerse.

Para deshabilitar el balanceador, conéctese a una de las instancias del clúster mongos 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 división automática de fragmentos. 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.stopBalancer() también deshabilita la división automática para el clúster fragmentado.
1

Ejecute desde db.shutdownServer() la admin base de datos en cada mongos enrutador:

use admin
db.shutdownServer()
2

Ejecute desde db.shutdownServer() la admin base de datos en cada miembro del conjunto de réplicas de fragmentos para cerrar su proceso. Cierre todos los miembros secundarios antes de cerrar el principal en cada conjunto de réplicas.mongod

3

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.

1

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 usa las opciones de la línea de comandos, inicie mongod --configsvr--replSet--bind_ipcon,, 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.

2

Al iniciar cada,mongod mongod especifique la configuración utilizando un archivo de configuración o la línea de comando.

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.

3

Inicie enrutadores utilizando un archivo de configuración o un parámetro de línea de comando para especificar los servidores de mongos configuración.

archivo de configuración

Si utiliza un archivo de configuración, inicie especificando mongos la --config opción 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 vincular la instancia a una dirección IP de acceso público, se debe asegurar el clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, se debe consultar Checklist de seguridad para implementaciones autogestionadas. Como mínimo, se debe considerar habilitar la autenticación y reforzar la infraestructura de red.

mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>

Incluya cualquier otra opción según sea apropiado para su implementación.

Vuelva a habilitar el balanceador para reanudar las migraciones de fragmentos.

Conéctese a una de las instancias del clúster mongos y ejecute el sh.startBalancer() comando: []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 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.

Conecte un shellmongoa uno de los procesosmongosdel clúster. Usesh.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.

Volver

Reemplazar un servidor de configuración

En esta página