Definição
setFeatureCompatibilityVersionHabilita ou desabilita as funcionalidades que persistem aos dados incompatÃveis com versões anteriores do MongoDB. Você só pode emitir o
setFeatureCompatibilityVersioncontra o banco de dadosadmin.
Para saber o que é a versão de compatibilidade do recurso e como ela suporta downgrades, consulte Versões do MongoDB e Caminhos de Atualização.
Aviso
Habilitar funcionalidades incompatÃveis com versões anteriores pode complicar o processo de downgrade, pois você deve remover todos as funcionalidades persistentes incompatÃveis com versões anteriores antes de fazer o downgrade.
É recomendável que, após a atualização, você permita que seu sistema seja executado sem habilitar funcionalidades incompatÃveis com versões anteriores por um perÃodo de burn-in para garantir que a probabilidade de downgrade seja mÃnima. Quando você estiver confiante de que a probabilidade de downgrade é mÃnima, habilite esses recursos.
Compatibilidade
Esse comando está disponÃvel em implantações hospedadas nos seguintes ambientes:
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponÃvel, de uso gratuito e autogerenciada do MongoDB
Sintaxe
Alterado na versão 7.0.
O comando tem a seguinte sintaxe:
db.adminCommand( { setFeatureCompatibilityVersion: <version>, confirm: true, writeConcern: { wtimeout: <timeout> } } )
Campos de comando
O comando setFeatureCompatibilityVersion usa os seguintes campos:
Definir versão de compatibilidade do recurso
Obrigatório
Os valores possÃveis para version são:
Versão | Descrição |
|---|---|
| DisponÃvel nos Sistemas do MongoDB 7.0 Habilita os recursos 7.0 que persistem dados incompatÃveis como MongoDB 6.0. |
| DisponÃvel nos Sistemas MongoDB 6.0 e 7.0 Habilita os 6.0 recursos que persistem dados incompatÃveis com o MongoDB 5.0. |
| DisponÃvel nos Sistemas MongoDB 5.0 e 6.0 Habilita os 5.0 recursos que persistem dados incompatÃveis com o MongoDB 4.4. |
confirmar
Obrigatório
Novidades na versão 7.0.
Defina como true para confirmar a alteração da compatibilidade do recurso e permitir que a operação continue.
Se você omitir o parâmetro confirm ou definir confirm como um valor diferente de true, o comando falhará e retornará um aviso sobre a modificação da versão de compatibilidade do recurso. O aviso diz que, depois de fazer uma atualização ou desatualização do FCV do cluster, você não poderá desatualizar a versão binária sem a assistência do suporte.
writeConcern
Opcional
O writeConcern especifica o valor de preocupação de gravação wtimeout em milissegundos:
O perÃodo que o primary aguarda a confirmação da maioria dos nós do conjunto de réplicas. Se o reconhecimento não for recebido no perÃodo, a operação falhará.
O padrão é
60000milissegundos. Utilize um perÃodo mais longo se os membros secundários do conjunto de réplicas tiverem um atraso que exceda o padrãowtimeout.
Comportamento
Downgrade com dados incompatÃveis com versões anteriores
Se você tentar desatualizar o FCV de um cluster que contenha dados incompatÃveis na versão baixada, receberá um erro CannotDowngrade. Quando esse erro ocorre, o cluster permanece no estado de transição downgrading.
Para tirar o cluster do estado downgrading:
Modifique os dados do cluster para remover funcionalidades incompatÃveis com versões anteriores e, em seguida, execute novamente o comando
setFeatureCompatibilityVersioncom a versão rebaixada para definir o FCV para a versão rebaixada.Execute o comando
setFeatureCompatibilityVersioncom a versão atualizada original para configurar o FCV de volta para a versão original.Importante
A configuração do FCV para a versão original interrompe o procedimento de downgrade e altera o FCV de volta para a versão atualizada. Esse procedimento não redefine o cluster para o estado anterior ao inÃcio da desatualização do FCV.
Se os metadados internos de um downgrade de FCV com falha não forem limpos, qualquer tentativa subsequente de atualização do FCV falhará com uma mensagem de erro. Você deve concluir a desatualização do FCV antes de tentar atualizar o FCV.
Alterações na PolÃtica de Downgrade do MongoDB 7.0
A partir do MongoDB 7.0, você não pode fazer downgrade do FCV de sua implantação para ou de uma versão de lançamento rápido do MongoDB.
Se você fizer o upgrade ou downgrade do FCV do seu sistema, não será possÃvel fazer o downgrade da versão binária do seu sistema sem assistência do suporte.
Para saber mais, consulte Downgrade 7.0 para 6.0.
Conflitos com operações em background
Certas operações em segundo plano podem impedir a execução de setFeatureCompatibilityVersion. Utilize o currentOp para identificar quaisquer operações em andamento.
Falhas de sincronização
Se você acionar uma alteração de setFeatureCompatibilityVersion durante uma sincronização inicial, a sincronização poderá falhar com uma mensagem de erro OplogOperationUnsupported ao reproduzir entradas na fase de aplicação oplog. A sincronização após essa tentativa é bem-sucedida porque a fase de operação não repete mais a operação.
Default Values
Implantações | featureCompatibilityVersion |
|---|---|
Para novas implantações do 7.0 |
|
Para sistemas 7.0 atualizados do 6.0 |
|
Para novas implantações do 6.0 |
|
Para 6.0 sistemas atualizados do 5.0 |
|
Idempotência
Este comando deve executar gravações em uma collection interna do sistema. Se, por algum motivo, o comando não for concluÃdo com êxito, você poderá tentar novamente com segurança, pois a operação é idempotente.
Cluster-to-Cluster Sync e bloqueio de escrita de usuário
A partir do MongoDB 6.0, se você precisar fazer downgrade da versão de compatibilidade de funcionalidades, certifique-se de desabilitar a replicação de cluster para cluster e o bloqueio de escrita do usuário.
Se você ativou a replicação de cluster para cluster, desative-a.
Se você habilitou o bloqueio de escrita do usuário, desative-o:
db.runCommand( { setUserWriteBlockMode: 1, global: false } ) Aguarde a conclusão do comando anterior.
Faça downgrade da versão de compatibilidade do recurso usando
setFeatureCompatibilityVersion.
Para obter mais informações sobre a Cluster-to-Cluster Sync do MongoDB ,consulte a documentação.
Compatibilidade de Funcionalidades em Arbiters
Os árbitros não replicam a collection admin.system.version. Por esse motivo, os árbitros sempre têm uma versão de compatibilidade de recursos igual à versão de downgrade do binário, independentemente do valor fCV do conjunto de réplicas.
Por exemplo, um árbitro em um cluster do MongoDB 5.0 tem um valor FCV de 4.4.
Exemplos
Obter FeatureCompatibilityVersion
Para visualizar o featureCompatibilityVersion para uma instância do mongod, execute o comando getParameter em uma instância do mongod:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
A saÃda se assemelha 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 }) }
Observação
A operação é indefinida nas instâncias do mongos.
Em um cluster fragmentado com controle de acesso habilitado, você deve se conectar ao shard como um usuário local do shard para executar o comando.
Definir Versão de Compatibilidade de Funcionalidades nos Sistemas do MongoDB 7.0
Habilitar funcionalidades incompatÃveis do 7.0 para trás
Para habilitar as funcionalidades do 7.0 que persistem dados incompatÃveis com MongoDB 6.0, configure a compatibilidade da funcionalidade para "7.0" no sistema do MongoDB 7.0:
Observação
Execute o comando setFeatureCompatibilityVersion no banco de dados do admin.
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
Desabilitar funcionalidades incompatÃveis com versões anteriores ao 7.0
Para desabilitar as funcionalidades da versão 7.0 que persistem em dados incompatÃveis com o MongoDB 6.0, defina a compatibilidade de funcionalidades como "6.0" no sistema do MongoDB 7.0:
Observação
Execute o comando setFeatureCompatibilityVersion no banco de dados do admin.
Para um standalone, execute o comando na instância do standalone
mongod.Para um conjunto de réplicas, execute o comando no primary. A maioria dos nós portadores de dados deve estar disponÃvel.
Para um cluster fragmentado, execute o comando em uma instância do
mongos.
"6.0"featureCompatibilityVersion é suportado somente nos sistemas MongoDB 6.0 e MongoDB 7.0.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0", confirm: true } )
Se executar como parte do processo de downgrade do MongoDB 7.0 para MongoDB 6.0, você também deverá remover todas as funcionalidades persistentes que são incompatÃveis com o 6.0. Consulte os procedimentos de downgrade apropriados.
Definir Versão de Compatibilidade de Funcionalidades em Sistemas do MongoDB 6.0
Habilitar funcionalidades incompatÃveis ao 6.0 para trás
Para habilitar as funcionalidades do 6.0 que persistem dados incompatÃveis com o MongoDB 5.0 , configure a compatibilidade da funcionalidade para "6.0" no sistema do MongoDB 6.0:
Observação
Execute o comando setFeatureCompatibilityVersion no banco de dados do admin.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
Desabilitar funcionalidades incompatÃveis com versões anteriores ao 6.0
Para desabilitar as funcionalidades 6.0 que persistem dados incompatÃveis com o MongoDB 5.0, defina a compatibilidade de funcionalidades como "5.0" no sistema do MongoDB 6.0:
Observação
Execute o comando setFeatureCompatibilityVersion no banco de dados do admin.
Para um standalone, execute o comando na instância do standalone
mongod.Para um conjunto de réplicas, execute o comando no primary. A maioria dos nós portadores de dados deve estar disponÃvel.
Para um cluster fragmentado, execute o comando em uma instância do
mongos.
"5.0"featureCompatibilityVersion é suportado somente nos sistemas MongoDB 5.0 e MongoDB 6.0.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
Se executar como parte do processo de downgrade do MongoDB 6.0 para o MongoDB 5.0, você também deverá remover todas as funcionalidades persistentes que são incompatÃveis com 5.0. Consulte os procedimentos de downgrade apropriados.
Definir Tempo Limite de Write Concern
O exemplo a seguir define o campo de wtimeout de write concern opcional como 5000 (5 segundos).
Observação
Execute o comando setFeatureCompatibilityVersion no banco de dados do admin.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )
Solução de problemas
Se você tiver problemas de inicialização após definir sua versão de compatibilidade do recurso, entre em contato com o suporte do MongoDB para obter ajuda.