Familiarize-se com o conteúdo deste documento, incluindo a revisão minuciosa dos pré-requisitos, antes de atualizar para MongoDB 9.0.
As etapas a seguir descrevem o procedimento para atualizar um mongod que é um membro do shard da versão 8.3 para 9.0.
Se precisar de orientação sobre como atualizar para a versão 9.0, os serviços profissionais do MongoDB viabilizam o upgrade da versão principal para ajudar a garantir uma transição sem percalços, sem interrupção para o seu aplicativo do MongoDB.
Recomendações de upgrade e listas de verificação
Ao atualizar, considere o seguinte:
Atualizar caminho da versão
Para atualizar uma implantação MongoDB existente para 9.0, você deve estar executando uma versão 8.3 ou 8.0.
Para atualizar de uma versão anterior à série 8.0, é preciso atualizar sucessivamente as principais versões até fazer o upgrade para a série 8.0. Por exemplo, se estiver executando a série 7.0, você deve atualizar para a 8.0 antes de fazer o upgrade para 9.0.
Verifique a compatibilidade do driver
Antes de atualizar o MongoDB, verifique se você está usando um driver 9.0compatível com o MongoDB. Consulte a documentação do driver específico para verificar a compatibilidade com o MongoDB..90
As implementações atualizadas que são executadas em drivers incompatíveis podem encontrar comportamentos inesperados ou indefinidos.
Preparação
Antes de iniciar sua atualização, consulte o documento Alterações de compatibilidade no MongoDB 9.0 para garantir que seus aplicativos e sistemas sejam compatíveis com o MongoDB 9.0. Resolva as incompatibilidades em sua implantação antes de iniciar a atualização.
Antes de atualizar o MongoDB, sempre teste seu aplicativo em um ambiente de preparação antes de implantar a atualização em seu ambiente de produção.
Consideração de rebaixamento
A partir do MongoDB 8.3, você pode fazer downgrade da sua versão do MongoDB para a versão secundária ou principal imediatamente anterior.
O MongoDB suporta apenas downgrades de versão única. Você não pode fazer o downgrade para uma versão que esteja várias versões atrás da versão atual.
Por exemplo, você pode fazer downgrade de uma série 9.0para uma série 8.0. No entanto, não há suporte para desatualização adicional dessa implantação da série 8.0para uma implantação da série 7.0.
Para saber mais, consulte Downgrade 9.0 para 8.3.
Pré-requisitos
Versão de todos os membros
Para atualizar um cluster fragmentado para 9.0, todos os membros do cluster devem executar a versão 8.3 ou 8.0. O processo de atualização verifica todos os componentes do cluster e produz avisos se algum componente estiver executando uma versão anterior a 8.0. Para atualizar um cluster fragmentado de 8.0, consulte Atualizar 8.0 para 9.0 Cluster fragmentado. Para atualizar um cluster fragmentado da série 7.0 e anterior, primeiro atualize todos os membros do cluster fragmentado para a versão mais recente da série 8.0 e, em seguida, siga o procedimento para atualizar do MongoDB 8.3 a 9.0.
Versão de compatibilidade de recursos
O cluster fragmentado 8.3 deve ter featureCompatibilityVersion definido como 8.3.
Para garantir que todos os membros do cluster fragmentado tenham featureCompatibilityVersion definido como 8.3, conecte-se a cada membro do conjunto de réplicas de shards e a cada membro do conjunto de réplicas do servidor de configuração . Em seguida, verifique o featureCompatibilityVersion:
Dica
Para um cluster fragmentado que tenha o controle de acesso habilitado, para executar o seguinte comando em um nó do conjunto de réplicas do fragmento, você deve se conectar ao nó como um usuário local do fragmento.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
"featureCompatibilityVersion" : { "version" : "8.3" }
Para configurar ou atualizar featureCompatibilityVersion, execute o seguinte comando no mongos:
db.adminCommand( { setFeatureCompatibilityVersion: "8.3", confirm: true } )
Para mais informações, consulte setFeatureCompatibilityVersion.
Estado do membro do conjunto de réplicas
Para fragmentos e servidores de configuração, certifique-se de que nenhum nó do conjunto de réplicas esteja no estado ROLLBACK ou RECOVERING.
db.adminCommand( { replSetGetStatus: 1 } )
Faça config backup do banco de dados
Opcional, mas recomendado. Como precaução, crie um backup do banco de dados do config antes de atualizar o cluster fragmentado.
Download 9.0 Binários
Usar um gerenciador de pacotes
Se você instalou o MongoDB a partir dos repositórios MongoDB apt, yum, dnf ou zypper, deverá atualizar para a versão 9.0 utilizando seu gerenciador de pacotes.
Siga as instruções de instalação do9.0 apropriadas para seu sistema Linux. Isso requer adicionar um repositório para a nova versão e, em seguida, executar o processo de upgrade real.
Baixe manualmente os binários 9.0
Se você não tiver instalado o MongoDB usando um gerenciador de pacotes, poderá fazer o download manual dos binários do MongoDB no MongoDB Download Center.
Consulte as instruções de instalação da versão 9.0 para obter mais informações.
Procedimento de atualização
Desabilitar o Balanceador
Conecte mongosh a uma instância no mongos sh.stopBalancer() cluster fragmentado e execute para desabilitar o balanceador:
sh.stopBalancer()
Observação
Se houver uma migração em andamento, o sistema a concluirá antes de encerrar o balanceador. Você pode executar o sh.isBalancerRunning() para verificar o estado atual do balanceador.
Para verificar se o balanceador está desativado, execute sh.getBalancerState(), que retorna false se o balanceador estiver desativado:
sh.getBalancerState()
Para obter mais informações sobre como desabilitar o balanceador, consulte Desabilitar o balanceador.
Atualize os servidores de configuração
Atualize os nós secundários do conjunto de réplicas, um de cada vez.
Desligue a instância secundária.
Para encerrar o processo
mongodmongoshde, use para se conectar ao membro do cluster e execute o seguinte comando:db.adminCommand( { shutdown: 1 } ) Substitua o 8.3 binário pelo 9.0 binário.
Iniciar o binário 9.0.
Inicie o binário 9.0 com o
--configsvr,--replSete--port. Inclua quaisquer outras opções conforme usado pela implantação.mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Se você utilizar um arquivo de configuração, atualize o arquivo para especificar
sharding.clusterRole: configsvr,replication.replSetName,net.portenet.bindIp, então inicie o 9.0 binary:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Inclua quaisquer outras configurações conforme adequado para sua implantação.
Aguarde até que o membro se recupere para o estado
SECONDARYantes de atualizar o próximo membro secundário.Para verificar o estado do membro, emita
rs.status()mongoshem.Repita para cada membro secundário.
Reduza o conjunto de réplicas primário.
Conecte à
mongoshrs.stepDown()primária e use para reduzir a primária e forçar a eleição de uma nova primária:rs.stepDown() Encerrar o primário de redução
Quando
rs.status()mostrar que o primário foi desativado e outro nó assumiu o estadoPRIMARY, encerre o primário desativado.Para encerrar o primário desativado, use para se conectar ao primário e executar o seguinte
mongoshcomando:db.adminCommand( { shutdown: 1 } ) Substitua o binário
mongodpelo binário 9.0 .Iniciar o binário 9.0.
Inicie o 9.0 com as opções
--configsvr,--replSet,--porte--bind_ip. Inclua quaisquer opções de linha de comando opcionais utilizadas pela implantação anterior:mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Se estiver usando um arquivo de configuração, atualize o arquivo para especificar
sharding.clusterRole: configsvr,replication.replSetName,net.portenet.bindIpe, em seguida, inicie o 9.0 binário:sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Inclua qualquer outra configuração conforme adequado para sua implantação.
Atualize os shards
Atualize os fragmentos um de cada vez.
Para cada conjunto de réplicas do fragmento:
Atualize os nós secundários do conjunto de réplicas, um de cada vez.
Desligue a instância secundária.
Para encerrar o processo
mongodmongoshde, use para se conectar ao membro do cluster e execute o seguinte comando:db.adminCommand( { shutdown: 1 } ) Substitua o 8.3 binário pelo 9.0 binário.
Inicie o binário 9.0 com as opções
--shardsvr,--replSet,--porte--bind_ip. Inclua opções de linha de comando adicionais, conforme adequado, para sua implantação:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Se estiver usando um arquivo de configuração, atualize-o para incluir
sharding.clusterRole: shardsvr,replication.replSetName,net.portenet.bindIp, então inicie o binário 9.0 :sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Inclua qualquer outra configuração conforme adequado para sua implantação.
Aguarde até que o membro se recupere para o estado
SECONDARYantes de atualizar o próximo membro secundário.Para verificar o estado do nó, você pode emitir
rs.status()emmongosh.Repita para cada membro secundário.
Reduza o conjunto de réplicas primário.
Conecte à
mongoshrs.stepDown()primária e use para reduzir a primária e forçar a eleição de uma nova primária:rs.stepDown() Atualize o primário desativado.
Quando
rs.status()mostrar que o primário foi desativado e outro membro assumiu o estadoPRIMARY, faça upgrade do primário desativado:Encerrar o primário de redução
Para encerrar o primário desativado, utilize
mongoshpara conectar ao membro do conjunto de réplicas e executar o seguinte comando:db.adminCommand( { shutdown: 1 } ) Substitua o binário
mongodpelo binário 9.0 .Iniciar o binário 9.0.
Inicie o binário 9.0 com as opções
--shardsvr,--replSet,--porte--bind_ip. Inclua opções de linha de comando adicionais, conforme adequado, para sua implantação:mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> Se estiver usando um arquivo de configuração, atualize o arquivo para especificar
sharding.clusterRole: shardsvr,replication.replSetName,net.portenet.bindIpe, em seguida, inicie o 9.0 binário:sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> Inclua qualquer outra configuração conforme adequado para sua implantação.
Atualize as instâncias de mongos
Importante
Upgrade todas as instâncias do conjunto de réplicas do servidor de configuração (CSRS) primeiro, seguidas por todos os membros do fragmento e, finalmente, as instâncias mongos. Fazer upgrade do mongos antes de concluir estes upgrades pode resultar em problemas de compatibilidade.
Substitua cada instância mongos pelo 9.0 binário e reinicie. Inclua qualquer outra configuração conforme adequado para sua implantação.
Observação
A opção --bind_ip deve ser especificada quando os nós do cluster fragmentado são executados em hosts diferentes ou se clientes remotos se conectarem ao cluster fragmentado.
mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
Reative o balancer
Utilizando mongosh, conecte-se a um mongos no cluster e execute sh.startBalancer() para reativar o balanceador:
sh.startBalancer()
Para obter mais informações sobre como reativar o balanceador, consulte a página Habilitar o balanceador.
Habilitar funcionalidades 9.0 incompatíveis com versões anteriores
Neste ponto, você pode executar o 9.0 binários sem os recursos recursos do 9.0 que são incompatíveis com 8.3.
Para habilitar estas funcionalidades do 9.0, configure a versão de compatibilidade do recurso (FCV) para 9.0. Você também deve definir confirm como true.
Dica
Habilitar essas recursos funcionalidades 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 essas funcionalidades 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 essas funcionalidades.
Em uma instância do mongos, execute o comando setFeatureCompatibilityVersion no banco de dados admin:
db.adminCommand( { setFeatureCompatibilityVersion: "9.0", confirm: true } )
Definindo featureCompatibilityVersion (FCV) : "9.0" executa implicitamente um em cada replSetReconfig term shard para adicionar o campo ao documento de configuração de réplica do shard.
O comando não é concluído até que a nova configuração se propague para a maioria dos membros do conjunto de réplicas.
Este comando deve executar gravações em uma coleção interna do sistema. Se o comando não for concluído, você poderá tentar novamente o comando no mongos com segurança, pois a operação é idempotente.
Observação
Quando você atualiza o FCV para 9.0, o MongoDB migra metadados do servidor de configuração para os shards. Essa migração única pode fazer com que a atualização demore mais em clusters com muitos bancos de dados, collections ou chunks.
Enquanto os metadados de um banco de dados ou coleção monitorada estão sendo clonados, as operações que modificam, renomeiam, refragmentam ou descartam esse banco de dados ou coleção devem aguardar até que a clonagem seja concluída.
Observação
Quando você atualiza o FCV para 9.0, o MongoDB move metadados do servidor de configuração para os shards. Durante essa transição, a atualização do FCV drena e bloqueia operações de chunk, incluindo:
Migrações, manuais e emitidas por balanceadores
As operações de chunk são retomadas após a conclusão da atualização do FCV.
Observação
Quando você atualiza o FCV para 9.0, o MongoDB move metadados de coleção do servidor de configuração para os shards. Enquanto a atualização do FCV clona esses metadados, movePrimary bloqueia e falha com ConflictingOperationInProgress.
Tente movePrimary novamente após a conclusão da atualização do FCV.
Aviso
Compatibilidade mongos fCV
O binário mongos não pode se conectar a instâncias mongod cuja feature compatibility version (fCV) seja maior que a do mongos. Por exemplo, você não pode conectar um MongoDB 8.3 versão mongos a um 9.0 cluster fragmentado com fCV definido como 9.0. Entretanto, você pode conectar um MongoDB versão 8.3 mongos a um cluster fragmentado 9.0 com fCV definido como 8.3.
Solução de problemas
Se você tiver problemas de inicialização após a atualização, entre em contato com o suporte do MongoDB para obter ajuda.
Procedimentos de atualização adicionais
Para atualizar um autônomo, consulte Atualizar 8.3 autônomo para 9.0.
Para atualizar um conjunto de réplicas, consulte Atualizar 8.3 conjunto de réplicas para 9.0.