Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Degradar de 5.0 a 4.4

Degradar el conjunto de réplicas de la versión 5.0 a la versión 4.4

Antes de intentar realizar cualquier cambio a una versión inferior, familiarícese 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, puede degradar una implementación de la serie 5.0 a una de la serie 4.4. Sin embargo, no se admite degradar esa implementación de la serie 4.4 a una de la serie 4.2.

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

Si su conjunto de réplicas tiene habilitado el control de acceso, sus privilegios de usuario de degradación deben incluir privilegios para enumerar y administrar índices en las bases de datos. Un usuario con root El rol tiene los privilegios requeridos.

Para cambiar de la versión 5.0 a la 4.4, debe eliminar las funciones incompatibles que persisten o actualizar las opciones de configuración incompatibles. Estas 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:

  • Para configurar manualmente un valor por defecto para el nivel de confirmación de lectura o escritura (write concern) de un clúster, utiliza el comando setDefaultRWConcern.

  • Si tu clúster incluye un árbitro, y previamente habías desactivado el nivel de consistencia de lectura "Majority" para evitar la presión de caché en ciertas situaciones, puedes querer configurar --enableMajorityReadConcern false o replication.enableMajorityReadConcern: false una vez que realices el downgrade.

MongoDB 5.0 permite incluir los caracteres . o $ en los nombres de campo de los documentos. Debe eliminar cualquier documento que contenga nombres de campo que incluyan los caracteres . o $ antes de actualizar 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.

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 newlyAdded campo en la configuración de su conjunto de réplicas. Ejecute el siguiente comando en cada nodo del conjunto de réplicas para verificarlo:

    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 revertir la versión del featureCompatibilityVersion de tu set de réplicas:

  1. Conecte una carcasa a la mongo primaria.

  2. Degrade el featureCompatibilityVersion a "4.4".

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

    El setFeatureCompatibilityVersion comando realiza escrituras en una colección interna del sistema y es idempotente. Si por alguna razón el comando no se completa correctamente, vuelva a intentarlo en el servidor principal.

  3. Para garantizar que todos los miembros del set de réplicas reflejen el featureCompatibilityVersion actualizado, conéctate a cada miembro del set de réplicas y verifica el featureCompatibilityVersion:

    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 funcionalidades entre versiones igual a la versión de degradación del binario, independientemente del valor de la compatibilidad de funcionalidades entre versiones del set de réplicas.

Por ejemplo, un árbitro en 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 featureCompatibilityVersion devuelto, consulte Ver FeatureCompatibilityVersion.

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
Eliminar todas las colecciones de series temporales.

Gestión de filtros de auditoría en tiempo de ejecución

  • Restablece la configuración por defecto en el servidor primario en el grupo con db.admin.runCommand. El primario debería ser el último servidor de configuración del grupo en actualizarse.

    db.admin.runCommand(
    {
    setAuditConfig: 1,
    filter: {},
    auditAuthorizationSuccess: false
    }
    )

    El documento de configuración también se puede eliminar después de la degradación:

    config.settings.remove({_id: 'audit'});
  • Deshabilite la administración del filtro de auditoría de tiempo de ejecución en cada nodo configurando auditLog.runtimeConfiguration a false en el archivo de configuración del nodo.

  • Actualice los filtros de auditoría de esta instancia en el archivo de configuración local.

Eliminar todas las funciones persistentes que utilizan funciones de la versión 5.0. Estas incluyen, entre otras:

Advertencia

Antes de proceder con el procedimiento de degradación, asegúrese de que todos los miembros del set de réplicas, incluidos los miembros retrasados del set de réplicas, reflejen los cambios previos requeridos. Es decir, comprueba el featureCompatibilityVersion y la eliminación de funcionalidades incompatibles para cada nodo antes de realizar una reversión a una versión anterior.

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

Degradar cada miembro secundario del conjunto de réplicas, 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. Reemplace el binario 5.0 con el binario 4.4 y reinicie.

  3. Espere a que el nodo se recupere al estado SECONDARY antes de degradar el siguiente secundario. Para verificar el estado del nodo, utiliza el método rs.status() en mongosh.

  4. Una vez que el nodo esté en la etapa SECONDARY, degrade el siguiente secundario.

3

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

Degradar al árbitro nodo del set de réplicas:

  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. Eliminar el contenido del directorio de datos del árbitro. La storage.dbPath opción de configuración o la opción de línea de comandos especifican el directorio de datos --dbpath del mongod árbitro.

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

  4. Espere a que el miembro recupere el ARBITER estado. Para comprobar su estado, conecte al miembro mongosh rs.status() y ejecute el método.

4

Utilice rs.stepDown() en para mongosh reducir el nivel del servidor principal y forzar el procedimiento de conmutación por error normal.

rs.stepDown()

rs.stepDown() acelera el procedimiento de conmutación por error y es preferible a apagar el servidor principal directamente.

5

Cuando muestra que el miembro principal ha dimitido y otro miembro ha asumido rs.status() el PRIMARY estado:

  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. Reemplace el binario con el binario 4.4 y mongod reinicie.

Volver

Autónomo

En esta página