Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Degradar de 5.0 a 4.4

Bajar la versión del clúster sharded 5.0 a 4.4

Antes de que intentes cualquier degradación, familiarízate con el contenido de este documento.

Importante

Antes de actualizar o degradar un Set de réplicas, asegúrate de que todos los miembros del Set de réplicas estén en funcionamiento. De lo contrario, la actualización o degradación no se completará hasta que se inicien todos los miembros.

Si necesitas bajar de la versión 5.0, bájate a la última versión de parche de la 4.4.

MongoDB solamente soporta degradaciones de una única versión. No se puede retroceder a una versión que esté varias versiones por detrás de la versión actual.

Por ejemplo, puedes rebajar una implementación de la serie 5.0 a la serie 4.4. Sin embargo, no se admite la conversión adicional de esa implementación de la serie 4.4 a una implementación de la serie 4.2.

Opcional, pero se recomienda. Crea una copia de seguridad de tu base de datos.

Para hacer downgrade de la versión 5.0 a la 4.4, debes remover las funcionalidades incompatibles que están guardadas y/o actualizar la configuración incompatible. Estos incluyen:

MongoDB 5.0 cambió el valor predeterminado para el nivel de confirmación de lectura y escritura (write concern) a nivel de clúster, y la reversión a MongoDB 4.4 podría cambiar esos valores predeterminados nuevamente. Considera configurar manualmente el nivel de confirmación de lectura y escritura (read and write concern) por defecto de tu clúster antes de realizar el downgrade:

MongoDB 5.0 agrega soporte para incluir los caracteres . o $ en los nombres de los campos de los documentos. Debes borrar cualquier documento que contenga nombres de campos que incluyan los caracteres . o $ antes de realizar una degradación a MongoDB 4.4.

MongoDB 5.0 permite el soporte de archivos de datos de zona horaria en formato reducido. Si se utilizan archivos de datos de zona horaria en formato slim en su implementación, tal como se proporciona a MongoDB con la opción de línea de comandos --timeZoneInfo o la configuración de archivo processManagement.timeZoneInfo, debe degradar a MongoDB 4.4.7 o superior, o bien revertir los archivos de datos de zona horaria para utilizar los archivos de datos anteriores en formato no slim.

Asegúrate de que cualquier operación de refragmentación se haya completado con éxito antes de intentar cualquier procedimiento de degradación. Si una operación reciente de resharding ha fallado debido a un cambio de primario, debes ejecutar primero el comando cleanupReshardCollection antes de realizar un downgrade del featureCompatibilityVersion de tu clúster fragmentado.

Si una operación de resharding sigue ejecutándose mientras se reduce la versión del featureCompatibilityVersion del clúster compartido, la operación de resharding se abortará.

Primero, verifica lo siguiente:

  • Asegúrese de que no haya sincronización inicial en curso. Ejecutar el comando setFeatureCompatibilityVersion mientras una sincronización inicial está en curso provocará que la sincronización inicial se reinicie.

  • Asegúrese de que ningún nodo tenga un campo newlyAdded en su configuración del set de réplicas. Ejecútalo siguiendo comando en cada nodo de tu clúster sharded para verificar esto:

    use local
    db.system.replset.find( { "members.newlyAdded" : { $exists : true } } );

    El campo newlyAdded solo aparece en el documento de configuración del set de réplicas de un nodo durante y poco después de una sincronización inicial.

  • Asegúrate de que ningún miembro del conjunto de réplicas esté en el estado ROLLBACK o RECOVERING.

A continuación, para degradar el featureCompatibilityVersion de tu clúster sharded:

  1. Conecte un shell mongo a la instancia mongos.

  2. Degrade el featureCompatibilityVersion a "4.4".

    db.adminCommand({setFeatureCompatibilityVersion: "4.4"})

    El comando setFeatureCompatibilityVersion realiza operaciones de guardado en una colección del sistema interno y es idempotente. Si por alguna razón la instrucción no se completa con éxito, retrase la instrucción en la instancia mongos.

    Nota

    • Mientras setFeatureCompatibilityVersion se está ejecutando en el clúster particionado, las migraciones, divisiones y combinaciones de fragmentos pueden fallar con ConflictingOperationInProgress.

    • Si setFeatureCompatibilityVersion falla con un error ManualInterventionRequired, y el clúster ha sufrido recientemente una operación de reshuffling que falló debido a una elección, debe ejecutar el comando cleanupReshardCollection antes de intentar setFeatureCompatibilityVersion de nuevo.

  3. Para garantizar que todos los nodos del clúster reflejen la actualización de featureCompatibilityVersion, conéctese a cada nodo del set de réplicas de particiones y a cada nodo del set de réplicas del servidor de configuración y verifique los featureCompatibilityVersion:

    Tip

    Para un clúster que tiene el control de acceso habilitado, para ejecutar el siguiente comando contra un miembro del set de réplicas, debes conectarte al miembro como un usuario local del shard.

    db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

    Todos los nodos deben devolver un resultado que incluya:

    "featureCompatibilityVersion" : { "version" : "4.4" }

    Si un nodo devuelve un featureCompatibilityVersion de "5.0", espera a que el nodo refleje la versión "4.4" antes de continuar.

Nota

Los árbitros no replican la admin.system.version colección. Por esta razón, los árbitros siempre tienen una compatibilidad de características entre versiones igual a la versión de degradación del binario, independientemente del valor de la compatibilidad de características entre versiones del Set de réplicas.

Por ejemplo, un árbitro de un clúster de MongoDB 5.0 tiene un valor de compatibilidad de características entre versiones de 4.4.

Para obtener más información sobre el valor de featureCompatibilityVersion devuelto, consulta Obtener la Version de Compatibilidad de Características.

Los siguientes pasos solo son necesarios si alguna vez se ha configurado la compatibilidad de características entre versiones en "5.0".

Remueva todas las funcionalidades persistentes de la versión 5.0 que sean incompatibles con la versión 4.4. Esto incluye:

Colección de series de tiempo
Remueva todas las colecciones de series de tiempo.
Gestión de filtros de auditoría en tiempo de ejecución
  • Desactiva la gestión del filtro de auditoría en tiempo de ejecución configurando auditLog.runtimeConfiguration en false en el archivo de configuración del nodo.

  • Actualiza los filtros de auditoría para esta mongod o mongos instancia en el archivo de configuración local.

Remueva todas las funcionalidades guardadas que usen funcionalidades de la versión 5.0. Estos incluyen, pero no se limitan a:

Advertencia

Antes de proceder con el procedimiento de degradación, asegúrese de que todos los miembros, incluidos los miembros de set de réplicas retrasados en el clúster, reflejen los cambios previos necesarios. Es decir, comprueba el featureCompatibilityVersion y la eliminación de funcionalidades incompatibles para cada nodo antes de la degradación.

1

Utilizando un administrador de paquetes o una descarga manual, obtén la versión más reciente de la serie 4.4. Si utilizas un gestor de paquetes, añade un nuevo repositorio para los binarios de la versión 4.4 y luego realiza el proceso real de degradación.

Importante

Antes de actualizar o degradar un Set de réplicas, asegúrate de que todos los miembros del Set de réplicas estén en funcionamiento. De lo contrario, la actualización o degradación no se completará hasta que se inicien todos los miembros.

Si necesitas bajar de la versión 5.0, bájate a la última versión de parche de la 4.4.

2

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, consulta Deshabilitar el balanceador.

3

Reduce la versión de los binarios y reinicia.

4

Degradar las particiones uno a la vez.

  1. Reducir de categoría los miembros secundarios de la partición uno por uno:

    1. Ejecute el siguiente comando en mongosh para realizar un apagado limpio, o consulte Detener procesos de mongod para conocer formas adicionales de finalizar de forma segura el proceso de mongod:

      db.adminCommand( { shutdown: 1 } )
    2. Reemplaza el binario 5.0 con el binario 4.4 y reinicia.

    3. Espere a que el nodo se recupere al estado SECONDARY antes de degradar el siguiente nodo secundario. Para comprobar el estado del nodo, conecta mongosh a la partición y ejecuta el método rs.status().

      Repetir para degradar para cada miembro secundario.

  2. Degrada la árbitro de la partición, si hay alguna.

    Omite este paso si el conjunto de réplicas no incluye un árbitro.

    1. Ejecute el siguiente comando en mongosh para realizar un apagado limpio, o consulte Detener procesos de mongod para conocer formas adicionales de finalizar de forma segura el proceso de mongod:

      db.adminCommand( { shutdown: 1 } )
    2. Elimine el contenido del directorio de datos del árbitro. El storage.dbPath ajuste de configuración o --dbpath opción de línea de comandos especifica el directorio de datos del árbitro mongod.

      rm -rf /path/to/mongodb/datafiles/*
    3. Reemplaza el binario 5.0 con el binario 4.4 y reinicia.

    4. Espera a que el nodo se recupere al estado ARBITER. Para comprobar el estado del nodo, conecte mongosh al nodo y ejecute rs.status() método.

  3. Reducir la versión primaria de la partición.

    1. Degrada el nodo primario del set de réplicas. Conecte mongosh al primario y utilice rs.stepDown() para degradar el primario y forzar la elección de un nuevo primario:

      rs.stepDown()
    2. Ejecuta rs.status().

      rs.status()

      Cuando el estado indique que el primario ha cedido el paso y otro nodo ha asumido el estado PRIMARY, proceda.

    3. Ejecuta el siguiente comando desde mongosh para realizar un apagado limpio del primario al que se le retiró la primaria o consulta Detener Procesos de mongod para obtener formas adicionales de terminar de forma segura el proceso mongod:

      db.adminCommand( { shutdown: 1 } )
    4. Reemplaza el binario 5.0 con el binario 4.4 y reinicia.

Repita para las particiones restantes.

5
  1. Degradar los secundarios miembros del set de réplicas de servidores de configuración (CSRS) uno a la vez:

    1. Ejecute el siguiente comando en mongosh para realizar un apagado limpio, o consulte Detener procesos de mongod para conocer formas adicionales de finalizar de forma segura el proceso de mongod:

      db.adminCommand( { shutdown: 1 } )
    2. Reemplaza el binario 5.0 con el binario 4.4 y reinicia.

    3. Espere a que el nodo se recupere al estado SECONDARY antes de degradar el siguiente nodo secundario. Para comprobar el estado del nodo, conecta mongosh a la partición y ejecuta el método rs.status().

      Repetir para degradar para cada miembro secundario.

  2. Desciende el primario del servidor de configuración.

    1. Conecte mongosh al principal y utilice rs.stepDown() para rebajar al principal y forzar la elección de un nuevo principal:

      rs.stepDown()
    2. Ejecuta rs.status().

      rs.status()

      Cuando el estado indique que el primario ha cedido el paso y otro nodo ha asumido el estado PRIMARY, proceda.

    3. Ejecuta el siguiente comando desde mongosh para realizar un apagado limpio del primario al que se le retiró la primaria o consulta Detener Procesos de mongod para obtener formas adicionales de terminar de forma segura el proceso mongod:

      db.adminCommand( { shutdown: 1 } )
    4. Reemplaza el binario 5.0 con el binario 4.4 y reinicia.

6

Una vez completada la degradación de los componentes del clúster fragmentado, conecta mongosh a un mongos y vuelve a habilitar el balanceador.

sh.startBalancer()

El método mongosh sh.startBalancer() también permite la separación automática para el clúster fragmentado.

Volver

Set de réplicas

En esta página