Definición
setFeatureCompatibilityVersionActiva o desactiva las caracterÃsticas que mantienen datos incompatibles con versiones anteriores de MongoDB. Sólo puedes emitir el
setFeatureCompatibilityVersioncontra la base de datosadmin.
Advertencia
La habilitación de caracterÃsticas incompatibles con versiones anteriores puede complicar el proceso de degradación, ya que debes Remover cualquier caracterÃstica incompatible con versiones anteriores que persista antes de realizar la degradación.
Se recomienda que, después de actualizar, se permita que la implementación se ejecute sin habilitar funcionalidades incompatibles con versiones anteriores durante un perÃodo de prueba para asegurar que la probabilidad de tener que realizar una degradación sea mÃnima. Cuando te tenga la certeza de que la probabilidad de degradación es mÃnima, se deben activar estas funcionalidades.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
Cambiado en la versión 7.0.
El comando tiene la siguiente sintaxis:
db.adminCommand( { setFeatureCompatibilityVersion: <version>, confirm: true, writeConcern: { wtimeout: <timeout> } } )
Campos de comandos
El comando setFeatureCompatibilityVersion toma los siguientes campos:
setFeatureCompatibilityVersion
Requerido
Los valores posibles para version son:
Versión | Descripción |
|---|---|
| Disponible en las implementaciones de MongoDB 7.0 Habilita las caracterÃsticas de 7.0 que mantienen datos incompatibles con MongoDB 6.0. |
| Disponible en las implementaciones de MongoDB 6.0 y 7.0 Habilita las caracterÃsticas 6.0 que persisten datos incompatibles con MongoDB 5.0. |
| Disponible en las implementaciones de MongoDB 5.0 y 6.0 Habilita las caracterÃsticas 5.0 que persisten datos incompatibles con MongoDB 4.4. |
confirme
Requerido
Nuevo en la versión 7.0.
Establece en true para confirmar el cambio de compatibilidad de caracterÃsticas y permitir que la operación continúe.
Si omites el parámetro confirm o estableces confirm en un valor distinto de true, el comando falla y devuelve una advertencia sobre la modificación de la compatibilidad de funcionalidades entre versiones. La advertencia indica que después de actualizar o degradar la compatibilidad de caracterÃsticas entre versiones del clúster, no se podrá degradar la versión binaria sin asistencia de soporte.
writeConcern
Opcional
El writeConcern especifica el valor wtimeout del nivel de confirmación de escritura en milisegundos:
El perÃodo de tiempo que el primario espera la confirmación de la mayorÃa de los miembros del Set de réplicas. Si no se recibe el acuse de recibo en el perÃodo de tiempo, la operación falla.
Por defecto es
60000milisegundos. Utiliza un perÃodo de tiempo más largo si los miembros secundarios del Set de réplicas tienen un retraso que excede elwtimeoutpor defecto.
Comportamiento
Descenso de categorÃa con datos incompatibles
Si intenta degradar la versión FCV de un clúster que contiene datos incompatibles en la versión descargada, recibirá un error CannotDowngrade. Cuando se produce este error, el clúster permanece en el estado transitorio downgrading.
Para mover el clúster fuera del estado downgrading, o bien:
Se deben modificar los datos del clúster para eliminar las funcionalidades incompatibles con versiones anteriores, luego se debe volver a ejecutar el comando
setFeatureCompatibilityVersioncon la versión degradada para establecer la compatibilidad de caracterÃsticas entre versiones en la versión degradada.Ejecuta el comando
setFeatureCompatibilityVersioncon la versión mejorada original para restablecer la compatibilidad de caracterÃsticas entre versiones a la versión original.Importante
Configurar la compatibilidad de caracterÃsticas entre versiones a la versión original detiene el procedimiento de degradación y cambia la compatibilidad de caracterÃsticas entre versiones de nuevo a la versión mejorada. Este procedimiento no restablece el clúster al estado anterior a que comenzara la rebaja de compatibilidad de caracterÃsticas entre versiones.
Si no se eliminan los metadatos internos de una compatibilidad de caracterÃsticas entre versiones fallida, cualquier intento posterior de actualización de la compatibilidad de caracterÃsticas entre versiones fallará con un mensaje de error. Debes completar la rebaja de la compatibilidad de caracterÃsticas entre versiones antes de intentar actualizar la compatibilidad de caracterÃsticas entre versiones.
Cambios en la polÃtica de retroceso en MongoDB 7.0
A partir de MongoDB 7.0, no puede degradar la compatibilidad de caracterÃsticas entre versiones de su implementación a o desde una versión rapid release de MongoDB.
Si se actualiza o degrada la compatibilidad de caracterÃsticas entre versiones de la implementación, no se podrá degradar la versión binaria de la implementación sin asistencia del soporte.
Para aprender más, consulta Degradar de 7.0 a 6.0.
Conflictos con las operaciones en segundo plano
Ciertas operaciones en segundo plano pueden impedir la ejecución de setFeatureCompatibilityVersion. Utiliza currentOp para identificar cualquier operación en curso.
Fallos de sincronización
Si se produce un setFeatureCompatibilityVersion cambio de trigger durante una sincronización inicial, la sincronización puede fallar con un mensaje de error OplogOperationUnsupported al reproducir las entradas en la fase de aplicación oplog. La sincronización después de este intento tiene éxito porque la fase de Operación ya no repite la Operación.
Default Values
Implementaciones | featureCompatibilityVersion |
|---|---|
Para nuevas implementaciones de 7.0 |
|
Para implementaciones de 7.0 actualizadas desde 6.0 |
|
Para nuevas implementaciones de 6.0 |
|
Para las implementaciones 6.0 actualizadas desde 5.0 |
|
Idempotencia
Este comando debe realizar guardados en una colección interna del sistema. Si por alguna razón el comando no se completa correctamente, puede volver a intentarlo con seguridad, ya que la operación es idempotente.
Cluster-to-Cluster Sync y bloqueo de guardado de usuarios
A partir de MongoDB 6.0, si necesita degradar la compatibilidad de caracterÃsticas entre versiones, asegúrate de deshabilitar la replicación de clúster a clúster y el bloqueo de escritura de usuarios.
Si has activado la replicación de clúster a clúster, desactÃvala.
Si has activado el bloqueo de guardado del usuario, desactÃvalo:
db.runCommand( { setUserWriteBlockMode: 1, global: false } ) Espera a que se complete el comando anterior.
Reduce la compatibilidad de caracterÃsticas entre versiones usando
setFeatureCompatibilityVersion.
Para obtener más información sobre MongoDB Cluster-to-Cluster Sync, consulta la documentación.
Compatibilidad de caracterÃsticas en árbitros
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.
Ejemplos
Obtener FeatureCompatibilityVersion
Para ver el featureCompatibilityVersion de una instancia de mongod, ejecuta el comando getParameter en una instancia de mongod:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
La salida es similar a:
{ featureCompatibilityVersion: { version: '5.0' }, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1660318752, i: 5 }), signature: { hash: Binary(Buffer.from("ce0cff3621e9b089fa6d8e9a1e1efc1a1ff15dab", "hex"), 0), keyId: Long("7129893797260951557") } }, operationTime: Timestamp({ t: 1660318752, i: 5 }) }
Nota
La operación no está definida en las instancias de mongos.
En un clúster particionado que tiene habilitado el control de acceso, debe conectarse al fragmento como usuario local del fragmento para ejecutar el comando.
Establecer la versión de compatibilidad de caracterÃsticas entre versiones en implementaciones de MongoDB 7.0
Habilita caracterÃsticas incompatibles con versiones anteriores de 7.0
Para habilitar las caracterÃsticas de 7.0 que persisten datos incompatibles con MongoDB 6.0, establece la compatibilidad de caracterÃsticas en "7.0" en la implementación de MongoDB 7.0:
Nota
Ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin.
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
Desactivar caracterÃsticas incompatibles con versiones anteriores de 7.0
Para desactivar las caracterÃsticas de 7.0 que persisten datos incompatibles con MongoDB 6.0, configura la compatibilidad de caracterÃsticas a "6.0" en la implementación de MongoDB 7.0:
Nota
Ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin.
Para una instancia autónoma, ejecuta el comando en la instancia
mongodautónoma.Para un Set de réplicas, ejecuta el comando en el Primario. La mayorÃa de los miembros portadores de datos deben estar disponibles.
Para un clúster fragmentado, ejecuta el comando en una instancia
mongos.
"6.0"featureCompatibilityVersion es compatible solo con las implementaciones de MongoDB 6.0 y MongoDB 7.0.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0", confirm: true } )
Si se ejecutan como parte del proceso de degradación de MongoDB 7.0 a MongoDB 6.0, también debes remover todas las caracterÃsticas persistentes que sean incompatibles con 6.0. Consulta los procedimientos de degradación apropiados.
Establecer la versión de compatibilidad de caracterÃsticas entre versiones en las implementaciones de MongoDB 6.0
Activar las caracterÃsticas incompatibles con versiones anteriores de 6.0
Para habilitar las caracterÃsticas 6.0 que persisten datos incompatibles con MongoDB 5.0 , configura la compatibilidad de las caracterÃsticas a "6.0" en la implementación de MongoDB 6.0:
Nota
Ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
Desactivar caracterÃsticas incompatibles con la versión 6.0
Para desactivar las caracterÃsticas de 6.0 que almacenan datos incompatibles con MongoDB 5.0, configura la compatibilidad de funciones a "5.0" en la implementación de MongoDB 6.0:
Nota
Ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin.
Para una instancia autónoma, ejecuta el comando en la instancia
mongodautónoma.Para un Set de réplicas, ejecuta el comando en el Primario. La mayorÃa de los miembros portadores de datos deben estar disponibles.
Para un clúster fragmentado, ejecuta el comando en una instancia
mongos.
"5.0"featureCompatibilityVersion es compatible solo con las implementaciones de MongoDB 5.0 y MongoDB 6.0.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
Si se ejecuta como parte del proceso de degradación de MongoDB 6.0 a MongoDB 5.0, también debes remover todas las caracterÃsticas persistentes que sean incompatibles con 5.0. Consulta los procedimientos de degradación apropiados.
Establecer el Tiempo de Espera del Nivel de Confirmación de Escritura
El siguiente ejemplo establece el campo opcional de nivel de confirmación de escritura wtimeout en 5000 (5 segundos).
Nota
Ejecuta el comando setFeatureCompatibilityVersion en la base de datos admin.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )
Solución de problemas
Si experimentas problemas de inicio después de configurar la compatibilidad de caracterÃsticas entre versiones, comunÃcate con el Soporte de MongoDB para buscar ayuda.