Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Definir versão de compatibilidade do recurso

Nesta página

  • Definição
  • Sintaxe
  • Campos de comando
  • Definir versão de compatibilidade do recurso
  • confirmar
  • Escreva preocupação
  • Comportamento
  • Downgrade com dados incompatíveis com versões anteriores
  • Alterações na Política de Downgrade do MongoDB 7.0
  • Conflitos com operações em background
  • Falhas de sincronização
  • Valores padrão
  • Idempotência
  • Cluster-to-Cluster Sync e bloqueio de escrita de usuário
  • Compatibilidade de Funcionalidades em Arbiters
  • Exemplos
  • Obter FeatureCompatibilityVersion
  • Definir Versão de Compatibilidade de Funcionalidades nos Sistemas do MongoDB 7.0
  • Definir Versão de Compatibilidade de Funcionalidades em Sistemas do MongoDB 6.0
  • Definir Versão de Compatibilidade de Funcionalidades nos Sistemas do MongoDB 5.0
  • Definir Versão de Compatibilidade de Funcionalidades nos Sistemas do MongoDB 4.4
  • Definir Tempo Limite de Write Concern
setFeatureCompatibilityVersion

Habilita ou desabilita as funcionalidades que persistem aos dados incompatíveis com versões anteriores do MongoDB. Você só pode emitir o setFeatureCompatibilityVersion contra o banco de dados admin .

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.

Alterado na versão 7.0.

O comando tem a seguinte sintaxe:

db.adminCommand(
{
setFeatureCompatibilityVersion: <version>,
confirm: true
writeConcern: { wtimeout: <timeout> }
}
)

O comando setFeatureCompatibilityVersion usa os seguintes campos:

Obrigatório

Os valores possíveis para version são:

Versão
Descrição
"7.0"

Disponível nos Sistemas do MongoDB 7.0

Habilita os recursos 7.0 que persistem dados incompatíveis como MongoDB 6.0.

"6.0"

Disponível nos Sistemas MongoDB 6.0 e 7.0

Habilita os recursos 6.0 que persistem dados incompatíveis com o MongoDB 5.0.

"5.0"

Disponível nos Sistemas MongoDB 5.0 e 6.0

Habilita os recursos 5.0 que persistem dados incompatíveis com o MongoDB 4.4.

"4.4"

Disponível nos Sistemas MongoDB 4.4 e 5.0

Habilita os recursos 4.4 que persistem dados incompatíveis com o MongoDB 4.2.

"4.2"

Disponível nos Sistemas do MongoDB 4.4

Desativa os recursos 4.4 que persistem dados incompatíveis com o MongoDB 4.2.

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 feature compatibility version. O aviso afirma que, depois de atualizar ou fazer downgrade do fCV do cluster, você não pode fazer downgrade da versão binária sem assistência de suporte.

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 é 60000 milissegundos. Utilize um período mais longo se os membros secundários do conjunto de réplicas tiverem um atraso que exceda o padrão wtimeout.

Observação

  • 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.

Se você tentar fazer downgrade do 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 setFeatureCompatibilityVersion com a versão rebaixada para definir o fCV para a versão rebaixada.

  • Execute o comando setFeatureCompatibilityVersion com 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 de volta ao estado anterior ao início do downgrade do fCV.

    Se os metadados internos de uma desatualização do 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.

A partir do MongoDB 7.0, não é possível fazer downgrade do fCV do seu sistema ou de uma versão de rapid release 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.

Certas operações em segundo plano podem impedir a execução de setFeatureCompatibilityVersion. Utilize o currentOp para identificar quaisquer operações em andamento.

Se você acionar uma alteração setFeatureCompatibilityVersion durante uma initial sync, 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.

Implantações
featureCompatibilityVersion
Para novos sistemas do 7.0
"7.0"
Para sistemas 7.0 atualizados do 6.0
"6.0" até você setFeatureCompatibilityVersion a "7.0".
Para novos sistemas 6.0
"6.0"
Para sistemas 6.0 atualizados do 5.0
"5.0" até você setFeatureCompatibilityVersion a "6.0".
Para novos sistemas 5.0
"5.0"
Para sistemas 5.0 atualizados do 4.4
"4.4" até você setFeatureCompatibilityVersion a "5.0".
Para novos sistemas 4.4
"4.4"
Para sistemas 4.4 atualizados do 4.2
"4.2" até você setFeatureCompatibilityVersion a "4.4".
Para novos sistemas 4.2
"4.2"
Por 4.2 sistemas atualizados do 4.0
"4.0" até você setFeatureCompatibilityVersion a "4.2".

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.

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.

  1. Se você ativou a replicação de cluster para cluster, desative-a.

  2. Se você habilitou o bloqueio de escrita do usuário, desative-o:

    db.runCommand( { setUserWriteBlockMode: 1, global: false } )
  3. Aguarde a conclusão do comando anterior.

  4. Faça downgrade da versão de compatibilidade de funcionalidades usando setFeatureCompatibilityVersion.

Para obter mais informações sobre a sincronização do Cluster-to-Cluster do MongoDB, consulte a documentação.

Os arbiters não replicam a collection admin.system.version. Por esse motivo, os arbiters 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 arbiter em um cluster do MongoDB 5.0 tem um valor fCV de 4.4.

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.

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 admin no banco de dados do .

  • 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.

db.adminCommand(
{
setFeatureCompatibilityVersion: "7.0",
confirm: true
}
)

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 admin no banco de dados do .

  • 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.

Para habilitar as funcionalidades do 6.0 que persistem dados incompatíveis com MongoDB 5.0, configure a compatibilidade da funcionalidade para "6.0" no sistema do MongoDB 6.0:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

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

Para desabilitar as funcionalidades do 6.0 que persistem dados incompatíveis com MongoDB 5.0, configure a compatibilidade da funcionalidade para "5.0" no sistema do MongoDB 6.0:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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 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.

Para habilitar as funcionalidades do 5.0 que persistem dados incompatíveis com MongoDB 4.4, configure a compatibilidade da funcionalidade para "5.0" no sistema do MongoDB 5.0:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

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

Para desabilitar as funcionalidades do 5.0 que persistem dados incompatíveis com MongoDB 4.4, configure a compatibilidade da funcionalidade para "4.4" no sistema do MongoDB 5.0:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

  • "4.4" featureCompatibilityVersion é suportado somente nos sistemas MongoDB 4.4 e MongoDB 5.0.

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

Se executar como parte do processo de downgrade do MongoDB 5.0 para MongoDB 4.4, você também deverá remover todas as funcionalidades persistentes que são incompatíveis com o 4.4. Consulte os procedimentos de downgrade apropriados.

Para habilitar as funcionalidades 4.4 que persistem dados incompatíveis com o MongoDB 4.2, defina a compatibilidade de funcionalidades como "4.4" no sistema do MongoDB 4.4:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

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

Para desabilitar as funcionalidades 4.4 que persistem dados incompatíveis com o MongoDB 4.2, defina a compatibilidade de funcionalidades como "4.2" no sistema do MongoDB 4.4:

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

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

Se executar como parte do processo de downgrade do MongoDB 4.4 para o MongoDB 4.2, você também deverá remover todas as funcionalidades persistentes que são incompatíveis com o 4.2. Consulte os procedimentos de downgrade apropriados.

O exemplo a seguir define o campo de wtimeout de write concern opcional como 5000 (5 segundos).

Observação

Execute o comando { setFeatureCompatibilityVersion admin no banco de dados do .

  • 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.

db.adminCommand( {
setFeatureCompatibilityVersion: "5.0",
writeConcern: { wtimeout: 5000 }
} )
← setClusterParameter