Familiarize-se com o conteúdo deste documento, incluindo a revisão minuciosa dos pré-requisitos, antes de atualizar com o MongoDB 8.0.
O MongoDB 8.0 introduz melhorias significativas de desempenho do MongoDB 7.0, incluindo, mas não limitado a:
Taxa de transferência de leitura até 36% melhor.
Até 32% de desempenho melhor para aplicativos da web tÃpicos.
Escritas simultâneas até 20% mais rápidas durante a replicação.
Observação
A quantidade de melhoria de desempenho pode variar dependendo da configuração de suas cargas de trabalho e instâncias do banco de dados .
Para saber mais, consulte Melhorias de desempenho.
As etapas a seguir descrevem o procedimento para atualizar um mongod que é um membro do shard da versão 7.0 para 8.0.
If you need guidance on upgrading to 8.0, MongoDB professional services offer major version upgrade support to help ensure a smooth transition without interruption to your MongoDB application.
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 8.0, você deve estar executando uma versão da série 7.0.
Para atualizar de uma versão anterior à série 7.0, é preciso atualizar sucessivamente as principais versões até fazer o upgrade para a série 7.0. Por exemplo, se estiver executando a série 6.0, você deve atualizar para a 7.0 antes de fazer o upgrade para 8.0.
Verifique a compatibilidade do driver
Before you upgrade MongoDB, check that you're using a MongoDB 8.0-compatible driver. Consult the driver documentation for your specific driver to verify compatibility with MongoDB 8.0.
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 8.0 para garantir que seus aplicativos e sistemas sejam compatÃveis com o MongoDB 8.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
Você não pode fazer downgrade da versão binária do seu sistema sem assistência do suporte.
Para saber mais, consulte Downgrade 8.0 para 7.0.
Pré-requisitos
Versão de todos os membros
Para fazer upgrade de um cluster fragmentado para a versão 8.0, todos os nós do cluster deverão ter pelo menos a versão 7.0. O processo de atualização verifica todos os componentes do cluster e produzirá avisos se algum componente estiver executando uma versão anterior à 7.0.
Versão de compatibilidade de recursos
O cluster fragmentado 7.0 deve ter featureCompatibilityVersion definido como "7.0".
Para garantir que todos os nós do cluster fragmentado tenham featureCompatibilityVersion configurado como "7.0", conecte-se a cada nó do conjunto de réplicas do fragmento e a cada nó do conjunto de réplicas do servidor de configuração e marque a opçã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 } )
Todos os membros devem retornar um resultado que inclua "featureCompatibilityVersion" : { "version" : "7.0" }.
Para configurar ou atualizar featureCompatibilityVersion, execute o seguinte comando no mongos:
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", 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, faça uma cópia de segurança do banco de dados config antes de atualizar o cluster fragmentado.
Remover coleções system.buckets inválidas
Ao atualizar para o MongoDB 8.0, se você tiver alguma coleção system.buckets que não seja coleção de séries temporais, talvez seja necessário drop ou rename essas coleções antes de atualizar, dependendo do seu 8.0 versão do patch:
- MongoDB 8.0.5 e posterior
- Você não precisa descartar collections
system.bucketsque não sejam collections de séries temporais antes de fazer o upgrade. No entanto, você deve descartá-los ou renomeá-los depois de concluir a atualização. - MongoDB 8.0.4 e anteriores
- Você deve eliminar ou renomear as coleções
system.bucketsque não são coleções de séries temporais antes de atualizar. Todas as coleções dosystem.bucketsdevem ter opções de séries temporais válidas configuradas antes de atualizar para as versões 8.0.0 - 8.0.4.
Para determinar se você tem coleções system.buckets que não são coleções de séries temporais, utilize o método db.getCollectionInfos() com um filtro:
db.getCollectionInfos( { $and: [ { name: { $regex: /^system\.buckets/ } }, { 'options.timeseries': { $exists: false } } ] } )
Download 8.0 Binários
Usar o 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 8.0 utilizando seu gerenciador de pacotes.
Siga as instruções de instalação do8.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 8.0
If you have not installed MongoDB using a package manager, you can manually download the MongoDB binaries from the MongoDB Download Center.
Consulte as instruções de instalação da versão 8.0 para obter mais informações.
Procedimento de atualização
Desabilitar o Balanceador.
Connect mongosh to a mongos instance in the sharded cluster, and run sh.stopBalancer() to disable the balancer:
sh.stopBalancer()
Observação
Se houver uma migração em andamento, o sistema concluirá essa migração antes de encerrar o balanceador. Você pode executar sh.isBalancerRunning() para verificar o estado atual do balanceador.
Para verificar se o balanceador está desativado, execute sh.getBalancerState(), que retorna falso 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.
Substitua o 7.0 binário pelo 8.0 binário.
Iniciar o binário 8.0.
Inicie o binário 8.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 estiver usando um arquivo de configuração, atualize o arquivo para especificar
sharding.clusterRole: configsvr,replication.replSetName,net.portenet.bindIpe, em seguida, inicie o 8.0 binário: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.To check the member's state, issue
rs.status()inmongosh.
Reduza o conjunto de réplicas primário.
Conecte
mongoshà primária e users.stepDown()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.To shut down the stepped-down primary, use
mongoshto connect to the primary and run the following command:db.adminCommand( { shutdown: 1 } ) Substitua o binário
mongodpelo binário 8.0 .Iniciar o binário 8.0.
Inicie o 8.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 8.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 fragmentos.
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.
Substitua o 7.0 binário pelo 8.0 binário.
Inicie o binário 8.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 8.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.To check the member's state, you can issue
rs.status()inmongosh.Repita para cada membro secundário.
Reduza o conjunto de réplicas primário.
Conecte
mongoshà primária e users.stepDown()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
To shut down the stepped-down primary, use
mongoshto connect to the replica set member and run the following command:db.adminCommand( { shutdown: 1 } ) Substitua o binário
mongod. com o binário 8.0 .Iniciar o binário 8.0.
Inicie o binário 8.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 8.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 8.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>
Reabilitar o balanceador.
Using mongosh, connect to a mongos in the cluster and run sh.startBalancer() to re-enable the balancer:
sh.startBalancer()
Para obter mais informações sobre como reativar o balanceador, consulte a página Habilitar o balanceador.
Habilite recursos 8.0 incompatÃveis com versões anteriores.
Neste ponto, você pode executar o 8.0 binários sem os recursos recursos do 8.0 que são incompatÃveis com 7.0.
Para habilitar estas funcionalidades do 8.0, configure a versão de compatibilidade do recurso (FCV) para 8.0. Você também deve definir confirm como true se estiver atualizando para 7.0 ou posterior.
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: "8.0", confirm: true } )
Definindo featureCompatibilityVersion (FCV) : "8.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.
Esse comando deve executar gravações em uma coleção interna do sistema. Se, por algum motivo, o comando não for concluÃdo com êxito, você poderá tentar novamente o comando no mongos com segurança, pois a operação é idempotente.
Observação
Enquanto setFeatureCompatibilityVersion estiver em execução no cluster fragmentado, migrações, divisões e mesclagens de partes podem apresentar falhas com ConflictingOperationInProgress.
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 7.0 versão mongos a um 8.0 cluster fragmentado com fCV definido como 8.0. Entretanto, você pode conectar um MongoDB versão 7.0 mongos a um cluster fragmentado 8.0 com fCV definido como 7.0.
Solução de problemas
If you experience startup issues after you upgrade, contact MongoDB Support for assistance.
Procedimentos de atualização adicionais
Para atualizar um standalone, consulte a página Atualizar um standalone para a versão 8.0.
Para atualizar um conjunto de réplicas, consulte Atualizar um conjunto de réplicas para 8.0.