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 6.0 a 5.0

Reducir Clúster Fragmentado 6.0 a 5.0

Antes de intentar realizar una degradación, familiarízate con el contenido de esta página.

Importante

Antes de actualizar o degradar un clúster, asegúrate de que todos los nodos del clúster estén en funcionamiento. Si no lo haces, la actualización o degradación no se completará hasta que todos los nodos estén iniciados.

Si necesitas realizar un downgrade desde la versión 6.0, hazlo a la última versión de 5.0.

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 cambiar una implementación de la serie 6.0 a una de la serie 5.0. Sin embargo, una posterior degradación de esa implementación 5.0-series a una implementación 4.4-series no está soportada.

Antes de comenzar con el procedimiento de degradación, debes completar los siguientes pasos previos.

1

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

Para aprender cómo crear una copia de seguridad, consulta Métodos de copia de seguridad para una implementación autogestionada.

2

Para realizar una reversión de 6.0 a 5.0, es necesario remover las funcionalidades 6.0 que no son compatibles con 5.0. Para obtener una lista de funcionalidades incompatibles y cómo removerlas, consulta Consideraciones sobre la reversión.

4

Para rebajar el compatibilidad de características entre versiones de tu clúster:

  1. Asegúrate de que no haya una sincronización inicial en curso. Ejecutar el comando setFeatureCompatibilityVersion mientras se está llevando a cabo una sincronización inicial provoca que la sincronización inicial se reinicie.

  2. Asegúrate de que ningún nodo tenga un campo newlyAdded en su configuración del set de réplicas. Ejecuta el siguiente comando en cada nodo de tu set de réplicas 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.

  3. Asegúrese de que ningún miembro del conjunto de réplicas esté en el ROLLBACK ni en el RECOVERING estado.

  4. Utiliza mongosh para conectarte a tu instancia de mongos.

  5. Degrade el featureCompatibilityVersion a "5.0".

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

    El comando setFeatureCompatibilityVersion realiza escrituras en una colección interna del sistema y es idempotente. Si la orden no se completa correctamente, intenta nuevamente la orden en la instancia de mongos.

    Nota

    Solución de problemas

    • 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 se realizó recientemente una operación de greyshard que falló debido a una elección, debes ejecutar el comando cleanupReshardCollection antes de intentar ejecutar setFeatureCompatibilityVersion nuevamente.

  6. Para garantizar que todos los miembros del set de réplicas tengan el featureCompatibilityVersion actualizado, conecte con cada miembro del set de réplicas y verifique el featureCompatibilityVersion:

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

    Tip

    Control de acceso

    Para un clúster con acceso controlado habilitado, para ejecutar el adminCommand en un nodo de un set de réplicas de particiones, debes conectarte al nodo como usuario local de particiones.

    Todos los nodos deben devolver un resultado que incluya:

    "featureCompatibilityVersion" : { "version" : "5.0" }

    Si cualquier nodo retorna un featureCompatibilityVersion de "6.0", espera a que el nodo retorne la versión "5.0" antes de continuar.

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

Advertencia

Antes de proceder con el procedimiento de reversión, asegúrate de que todos los nodos del clúster, incluidos los miembros del set de réplicas retardado, tienen los cambios previos requeridos. Para hacer eso, verifica el featureCompatibilityVersion y luego remueve las funcionalidades incompatibles de cada nodo antes de hacer la rebaja de versión.

1

Usando un administrador de paquetes o una descarga manual, obtén la versión más reciente de la serie 5.0. Si utiliza un gestor de paquetes, añada un nuevo repositorio para los binarios de la versión 5.0 y luego realice 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 realizar un downgrade desde la versión 6.0, hazlo a la última versión de 5.0.

2

Asegúrate de que los binarios 5.0 estén en tu System PATH. Para confirmar tu versión binaria, ejecuta el siguiente comando:

mongod --version

La salida del comando debe indicar una versión de la serie 5.0.

3

Para desactivar el balanceador, conecta mongosh a una instancia mongos en el clúster particionado y ejecuta el siguiente comando:

sh.stopBalancer()

Nota

Si una migración está en curso, MongoDB completa la migración en curso antes de detener el balanceador. Para comprobar el estado actual del equilibrador, ejecuta sh.isBalancerRunning().

Para verificar que el balanceador esté desactivado, ejecuta el siguiente comando:

sh.getBalancerState()

sh.getBalancerState() retorna false si el balanceador está deshabilitado.

Para obtener más información sobre cómo deshabilitar el balanceador, consulta Deshabilitar el balanceador.

4
  1. Para detener mongos, ejecute el siguiente comando:

    db.shutdownServer()
  2. Reinicia mongos con el binario 5.0.

5
  1. Rebajar los miembros secundarios de la partición, uno a la vez.

    1. Apaga el nodo.

      Para apagar el proceso mongod, utiliza mongosh para conectarte a la implementación y ejecutar el siguiente comando:

      db.adminCommand( { shutdown: 1 } )
    2. Reinicia el nodo.

      Para iniciar un proceso mongod, ejecuta el siguiente comando:

      mongod --dbpath </path-to-data-folder>
    3. Espere a que el nodo entre en el estado SECONDARY.

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

    4. Repite los pasos anteriores para revertir la versión de cada miembro secundario.

  2. Degradar el árbitro de particiones, si lo hay.

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

    Degradar el árbitro nodo del clúster:

    1. Apaga el nodo.

      Para apagar el árbitro, utiliza mongosh para conectarte al árbitro y ejecutar el siguiente comando:

      db.adminCommand( { shutdown: 1 } )
    2. Borrar el contenido del directorio de datos del árbitro.

      Para encontrar el directorio de datos del árbitro mongod, revise la configuración de la storage.dbPath o la opción de línea de comandos --dbpath.

      Ejecuta el siguiente comando:

      rm -rf /path/to/mongodb/datafiles/*
    3. Reinicia el árbitro.

      Para iniciar un proceso mongod, ejecuta el siguiente comando:

      mongod --dbpath </path-to-mongodb-datafiles>
    4. Espere a que el nodo entre en el estado ARBITER.

      Antes de hacer un downgrade, espere a que el nodo se recupere al estado ARBITER. Para verificar el estado del nodo, utiliza el método rs.status() en mongosh.

  3. Degrade el primario de la partición.

    1. Degradar al primario.

      En mongosh, se usa rs.stepDown() para desocupar el primario y comenzar una elección para un nuevo primario:

      rs.stepDown()
    2. Verifique que el primario se haya desactivado.

      Ejecuta el siguiente comando:

      rs.status()

      Verifique que el nodo principal haya renunciado y que otro nodo haya asumido el estado PRIMARY.

    3. Apague el antiguo miembro principal.

      Para apagar el antiguo primario, conéctate a la implementación utilizando mongosh y ejecuta el siguiente comando:

      db.adminCommand( { shutdown: 1 } )
    4. Reinicia el mongod con el binario 5.0.

      Para iniciar un proceso mongod, ejecuta el siguiente comando:

      mongod --dbpath </path-to-mongodb-datafiles>
    5. Repita para las particiones restantes.

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

    1. Apaga el secundario.

      Conéctate al secundario y ejecuta el siguiente comando:

      db.adminCommand( { shutdown: 1 } )
    2. Reinicia el nodo.

      Para iniciar un proceso mongod, ejecuta el siguiente comando:

      mongod --dbpath </path-to-data-folder>
    3. Espere a que el nodo entre en el estado SECONDARY.

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

    4. Repite los pasos anteriores para revertir la versión de cada miembro secundario.

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

    1. Degradar al primario.

      En mongosh, ejecuta rs.stepDown() para descender al primario e iniciar una elección para un nuevo primario:

      rs.stepDown()
    2. Verifique que el primario se haya desactivado.

      Ejecuta el siguiente comando:

      rs.status()

      Verifique que el nodo principal haya renunciado y que otro nodo haya asumido el estado PRIMARY.

    3. Apague el antiguo miembro principal.

      Para apagar el antiguo primario, conéctate a la implementación utilizando mongosh y ejecuta el siguiente comando:

      db.adminCommand( { shutdown: 1 } )
    4. Reinicia el mongod con el binario 5.0.

      Para iniciar un proceso mongod, ejecuta el siguiente comando:

      mongod --dbpath </path-to-mongodb-datafiles>
7

Después de bajar la versión de todos los componentes del clúster con particionado, conéctese a un mongos y ejecute el siguiente comando para volver a habilitar el balanceador:

sh.startBalancer()

El método sh.startBalancer() también habilita la división automática para el clúster compartido.

Volver

Set de réplicas

En esta página