Advertencia
Debido a actualizaciones de políticas de equilibrio 6.0.3 en MongoDB, el equilibrador puede iniciarse inmediatamente después de la actualización, incluso si la cantidad de fragmentos permanece igual.
Familiarízate con el contenido de este documento, incluyendo una revisión exhaustiva de los requisitos previos, antes de actualizar a MongoDB 6.0.
Los siguientes pasos describen el procedimiento para actualizar un
mongod que es un nodo de partición desde la versión 5.0 hasta la 6.0.
Si se necesita orientación sobre cómo actualizar a 6.0, los servicios profesionales de MongoDB ofrecen soporte para la actualización de versiones principales para ayudar a garantizar una transición sin problemas y sin interrupciones en la aplicación MongoDB.
Recomendaciones de actualizaciones y listas de verificación
Al actualizar, considere lo siguiente:
Ruta de actualización de versión
Para actualizar una implementación existente de MongoDB a 6.0, debes estar ejecutando una versión de la serie 5.0.
Para actualizar desde una versión anterior a la serie 5.0, debe actualizar las versiones principales sucesivamente hasta llegar a la serie 5.0. Por ejemplo, si utiliza una serie 4.4, primero debe actualizar a la 5.0 antes de poder actualizar a la 6.0.
Verifique la compatibilidad del controlador
Antes de actualizar MongoDB, se debe comprobar que se está usando un driver compatible con MongoDB 6.0. Se debe consultar la documentación del driver para el driver específico que se está usando y verificar la compatibilidad con MongoDB 6.0.
Las implementaciones actualizadas que se ejecutan en controladores incompatibles podrían experimentar un comportamiento inesperado o indefinido.
Advertencia
Si tus drivers utilizan opcodes heredados que quedaron obsoletos en la versión 3.6, actualiza tus drivers a una versión que utilice opcodes admitidos. Los controladores que usen códigos de operación heredados ya no son compatibles.
Preparación
Antes de comenzar tu actualización, consulta el documento Cambios de compatibilidad en MongoDB 6.0 para asegurarte de que tus aplicaciones y implementaciones sean compatibles con MongoDB 6.0. Resuelve las incompatibilidades en tu implementación antes de comenzar la actualización.
Antes de actualizar MongoDB, siempre se debe probar la aplicación en un entorno de pruebas antes de implementar la actualización en el entorno de producción.
Consideración de reducción de versión
Después de actualizar a 6.0, si necesitas bajar de versión, te recomendamos regresar a la última versión menor de la versión 5.0.
Requisitos previos
Versión de todos los nodos
Para actualizar un clúster fragmentado a 6.0, todos los nodos del clúster deben tener al menos la versión 5.0. El proceso de actualización revisa todos los componentes del clúster y generará advertencias si algún componente ejecuta una versión anterior a 5.0.
Compatibilidad de características entre versiones
El clúster particionado 5.0 debe tener featureCompatibilityVersion configurado en "5.0".
Para garantizar que todos los miembros del clúster fragmentado tengan featureCompatibilityVersion configurado en "5.0", conéctese a cada miembro del conjunto de réplicas de fragmentos y a cada miembro del conjunto de réplicas del servidor de configuración y verifique featureCompatibilityVersion:
Tip
Para un clúster fragmentado que tiene habilitado el control de acceso, para ejecutar el siguiente comando contra un miembro del conjunto de réplicas de fragmentos, debe conectarse al miembro como un usuario local de fragmentos.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
Todos los nodos deben devolver un resultado que incluya "featureCompatibilityVersion" : { "version" : "5.0" }.
Para establecer o actualizar featureCompatibilityVersion, ejecute el siguiente comando en mongos:
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
Para obtener más información, consulta setFeatureCompatibilityVersion.
Estado del nodo del set de réplicas
Para los fragmentos y los servidores de configuración, asegúrese de que ningún miembro del conjunto de réplicas esté en el estado ROLLBACK RECOVERING o.
Realizar una config copia de seguridad de la base de datos
Opcional, pero se recomienda. Como precaución, haz una copia de seguridad de la base de datos config antes de actualizar el clúster particionado.
Descargar binarios 6.0
Usar el gestor de paquetes
Si instaló MongoDB desde los repositorios de MongoDB apt, yum, dnf, o zypper, debe actualizar a 6.0 usando su gestor de paquetes.
Siga las instrucciones de instalación de la versión 6.0 correspondientes a su sistema Linux. Esto implica agregar un repositorio para la nueva versión y luego realizar la actualización.
Descarga 6.0 Binarios manualmente
Si no se ha instalado MongoDB usando un administrador de paquetes, se pueden descargar manualmente los binarios de MongoDB desde el Centro de Descargas de MongoDB.
Consulta Instrucciones de instalación 6.0 para obtener más información.
Procedimiento de actualización
Advertencia
Si actualiza una instancia existente de MongoDB a MongoDB 6.0.5, es posible que esa instancia no pueda iniciarse si fork: true está configurado en el archivo mongod.conf.
El problema de actualización afecta a todas las .deb .rpm instancias de MongoDB que usan paquetes de instalación o. Las instalaciones que usan la versión tarball ().tgz u otros tipos de paquetes no se ven afectadas. Para obtener más información, consulte SERVER-.74345
Para remover la configuración de fork: true, ejecute estos comandos desde una terminal del sistema:
systemctl stop mongod.service sed -i.bak '/fork: true/d' /etc/mongod.conf systemctl start mongod.service
El segundo comando systemctl inicia la instancia actualizada después de eliminar la configuración.
Desactivar el balanceador.
Conecte mongosh a una instancia mongos en el clúster fragmentado y ejecute sh.stopBalancer() para desactivar el balanceador:
sh.stopBalancer()
Nota
Si una migración está en progreso, el sistema completará la migración en curso antes de detener el balanceador. Puedes ejecutar sh.isBalancerRunning() para comprobar el estado actual del balanceador.
Para comprobar que el balanceador esté deshabilitado, ejecuta sh.getBalancerState(), que retorna false si el balanceador está deshabilitado:
sh.getBalancerState()
Para obtener más información sobre cómo deshabilitar el balanceador,consulte Deshabilitar el balanceador.
Reinicia cada mongos secuencialmente.
Ejecuta
db.shutdownServer()para detener una instancia demongos.db.shutdownServer() Reinicia la instancia
mongos.Repita para cada instancia de
mongosen el clúster.
Actualiza los servidores de configuración.
Actualiza los miembros secundarios del set de réplicas, uno a la vez.
Apague la instancia secundaria.
Para cerrar el proceso
mongod, usemongoshpara conectarse al nodo del clúster y ejecutar el siguiente comando:db.adminCommand( { shutdown: 1 } ) Reemplace el binario 5.0 con el binario 6.0.
Inicie el binario 6.0.
Inicia el binario 6.0 con el
--configsvr,--replSety--port. Incluya cualquier otra opción utilizada por la implementación.mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Si usas un archivo de configuración, actualiza el archivo para especificar
sharding.clusterRole: configsvr,replication.replSetName,net.portynet.bindIp; luego, inicia el binario 6.0:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Incluya cualquier otra configuración según sea necesario para su implementación.
Espere a que el nodo se recupere al estado
SECONDARYantes de actualizar el siguiente nodo secundario.Para comprobar el estado del nodo, ejecuta
rs.status()enmongosh.Repetir para cada miembro secundario.
Reduce el primario del set de réplicas.
Degradar al primario.
Conecta
mongoshal primario y utilizars.stepDown()para descender al primario y forzar una elección de un nuevo primario:rs.stepDown() Apague el primario reductor.
Cuando
rs.status()indique que el nodo principal se ha desplazado y otro miembro ha asumido el estadoPRIMARY, apaga el nodo principal desplazado.Para apagar la primaria degradada, utiliza
mongoshpara conectarte a la primaria y ejecutar el siguiente comando:db.adminCommand( { shutdown: 1 } ) Reemplace el binario
mongodcon el binario 6.0.Inicie el binario 6.0.
Inicie 6.0 con
--configsvr--replSetlas opciones,, y. Incluya las opciones de línea--portde comandos opcionales utilizadas en la implementación anterior:--bind_ipmongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Si usas un archivo de configuración, actualiza el archivo para especificar
sharding.clusterRole: configsvr,replication.replSetName,net.portynet.bindIp; luego, inicia el binario 6.0:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Incluye cualquier otra configuración que sea adecuada para tu implementación.
Actualizar las particiones.
Mejora los fragmentos uno a uno.
Para cada set de réplicas de particiones, actualiza los miembros secundarios del set de réplicas, uno a la vez:
Apague la instancia secundaria.
Para cerrar el proceso
mongod, usemongoshpara conectarse al nodo del clúster y ejecutar el siguiente comando:db.adminCommand( { shutdown: 1 } ) Reemplace el binario 5.0 con el binario 6.0.
Inicia el binario 6.0 con las opciones
--shardsvr,--replSet,--porty--bind_ip. Incluya las opciones de línea de comandos adicionales que correspondan para su implementación:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Si se utiliza un archivo de configuración, actualiza el archivo para incluir
sharding.clusterRole: shardsvr,replication.replSetName,net.portynet.bindIp, y luego inicia el 6.0 binario:sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Incluye cualquier otra configuración que sea adecuada para tu implementación.
Espere a que el nodo se recupere al estado
SECONDARYantes de actualizar el siguiente nodo secundario.Para comprobar el estado del nodo, puedes emitir
rs.status()enmongosh.Repetir para cada miembro secundario.
Reduce el primario del set de réplicas.
Conecte
mongoshal principal y utilicers.stepDown()para rebajar al principal y forzar la elección de un nuevo principal:rs.stepDown() Actualiza el primario bajado.
Cuando
rs.status()muestra que el primario ha dejado su función y otro nodo ha asumido el estadoPRIMARY, actualice el primario que ha sido desligado:Apague el primario reductor.
Para apagar el servidor primario reducido, use
mongoshpara conectarse al miembro del conjunto de réplicas y ejecute el siguiente comando:db.adminCommand( { shutdown: 1 } ) Reemplace el binario
mongodcon el binario 6.0.Inicie el binario 6.0.
Inicia el binario 6.0 con las opciones
--shardsvr,--replSet,--porty--bind_ip. Incluya las opciones de línea de comandos adicionales que correspondan para su implementación:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Si usas un archivo de configuración, actualiza el archivo para especificar
sharding.clusterRole: shardsvr,replication.replSetName,net.portynet.bindIp; luego, inicia el binario 6.0:sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Incluye cualquier otra configuración que sea adecuada para tu implementación.
Actualice las mongos instancias.
Reemplace cada instancia con mongos el 6.0 binario y reinicie. Incluya cualquier otra configuración según corresponda para su implementación.
Nota
Se debe especificar la opción --bind_ip cuando los nodos del clúster se ejecutan en diferentes hosts o si se conectan clientes remotos al clúster.
mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
Vuelva a habilitar el balanceador.
Usando mongosh, conecta a un mongos en el clúster y ejecuta sh.startBalancer() para volver a habilitar el balanceador:
sh.startBalancer()
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. Para más información, consulte Cambios en la política de balanceo.
En las versiones de MongoDB anteriores a la 6.0.3, sh.startBalancer() también habilita la división automática para el clúster particionado.
Si no desea habilitar la división automática mientras el balanceador esté activado, también debe ejecutar sh.disableAutoSplit().
Para más información sobre la reactivación del balanceador, consulta Activar el balanceador.
Habilitar funciones incompatibles con versiones anteriores 6.0.
En este punto, puedes ejecutar los binarios del 6.0 sin las funcionalidades del 6.0 que sean incompatibles con 5.0.
Para habilitar estas características de 6.0, configure la compatibilidad de características entre versiones (FCV) a 6.0.
Tip
Activar estas características incompatibles con versiones anteriores puede complicar el proceso de degradación, ya que se debe remover cualquier característica incompatible con versiones anteriores que persista antes de realizar la degradación.
Se recomienda que, tras la actualización, se permita que la implementación se ejecute sin habilitar estas características durante un periodo de prueba para asegurar que la probabilidad de reversión sea mínima. Cuando se esté seguro de que la probabilidad de degradación es mínima, se pueden activar estas características.
En una instancia mongos, ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin:
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
La configuración featureCompatibilityVersion (FCV): "6.0" realiza implícitamente un en cada replSetReconfig term fragmento para agregar el campo al documento de configuración de réplica del fragmento.
El comando no se completa hasta que la nueva configuración se propaga a la mayoría de los miembros del conjunto de réplicas.
Este comando debe realizar escrituras en una colección interna del sistema. Si por alguna razón el comando no se completa con éxito, puede volver a ejecutar el comando de manera segura en el mongos, ya que la operación es idempotente.
Nota
Mientras se ejecuta en el clúster fragmentado, las migraciones, divisiones y fusiones de fragmentos pueden setFeatureCompatibilityVersion fallar ConflictingOperationInProgress con.
Cualquier documento huérfano que exista en las particiones se limpiará cuando se configure el setFeatureCompatibilityVersion a 6.0. El proceso de limpieza:
No impide que se complete la actualización y
Tiene un límite de velocidad. Para mitigar el posible impacto en el rendimiento durante la limpieza de documentos huérfanos, consulta Tuning del Rendimiento de Eliminación de Rangos.
Nota
Consideración adicional
El binario mongos no puede conectarse a mongod instancias cuya compatibilidad de características entre versiones (FCV) sea superior a la del mongos. Por ejemplo, no puedes conectar un MongoDB 5.0 versión mongos a un 6.0 clúster particionado con compatibilidad de características entre versiones establecido en 6.0. Sin embargo, puedes conectar un MongoDB 5.0 versión mongos a un 6.0 clúster fragmentado con compatibilidad de características entre versiones establecido en 5.0.
Procedimientos de actualización adicionales
Para actualizar un autónomo, consulte Actualizar un GKE autónomo a la versión 6.0.
Para actualizar un conjunto de réplicas, consulte Actualizar un conjunto de réplicas a 6.0.