Upgrade de versão no MongoDB

delbussoweb

Leandro Domingues

Posted on August 21, 2023

Upgrade de versão no MongoDB

Fala pessoALL, parece que foi ontem, mas já estamos em mais da metade de Agosto/2023 e já fazem 3 meses que o MongoDB 4.2 teve o seu EOL (End of life), ou seja, não tem mais suporte oficial e também não recebe mais nenhum tipo de correção de bugs ou correções de segurança por exemplo. Com isso em mente, se você tem algum ambiente MongoDB 4.2 (seja ele Enterprise Advanced ou Community Edition) deve atualizá-lo imediatamente. Já no Atlas, o processo é um pouco diferente, e se você mesmo não atualizar até a data de EOL, o próprio Atlas cuida disso. Mas o que você deve saber ou fazer para que sua aplicação continue funcionado?

O processo de atualização dos binários é teoricamente simples e não exige nenhum tipo de alteração nos arquivos de dados, logs ou configuração (mongod.conf). A maior questão é com os drivers de sua aplicação, isso porque algumas funções ou métodos, podem ter sido descontinuados e então isso vai gerar um trabalho do lado do código.

Drivers

Procure sempre utilizar os drivers mais atualizados disponíveis para a sua linguagem de programação preferida. Atente-se aos recursos disponíveis e o nível de compatibilidade entre a versão do seu driver e a versão do MongoDB.

Neste link você pode consultar todos os drivers oficialmente suportados pelo MongoDB bem como as bibliotecas suportadas pela comunidade. Ao selecionar C# por exemplo, você pode ver a compatibilidade entre as versões:
.NET Driver Compatibility
Note que para utilizar o MongoDB 4.4 é necessário estar com a versão do driver .NET/C# minimamente na versão 2.11.

A atualização do driver pode ser a etapa mais trabalhosa quando você for atualizar a versão do MongoDB, isto porque, quanto mais antigo o driver, mais pontos de alterações você terá em sua aplicação. A dica aqui é sempre manter o driver atualizado, visto que a compatibilidade com versões anteriores do MongoDB é bastante ampla.

Release Notes

Uma outra fonte de consulta indispensável é a página de Release Notes, neste link você encontra todos os pontos de atualização, correção e melhorias da versão, e mais especificamente, você pode consultar a página mudanças de compatibilidade e consultar todas as mudanças efetuadas na versão desejada (neste caso falando da 4.4). Nestes links você tem um guia bem completo para seguir na sua caminhada de atualização do MongoDB.

Além de informações importantes sobre comandos, métodos, operadores e funções do MongoDB, é importante verificar a compatibilidade com o Sistema Operacional. Dependendo da sua versão, seu SO pode ter sido removido e não ter mais compatibilidade, isso leva um pouco mais de tempo, mas pode acontecer, e então antes de atualizar o MongoDB você precisará atualizar seu SO.

MongoDB Atlas Upgrade

O upgrade de versão no MongoDB Atlas é extremamente simples e com zero-downtime. Com as possíveis correções de compatibilidade executadas, você precisará apenas de alguns cliques. Vale ressaltar que o upgrade no MongoDB Atlas é compulsório quando a data limite for atingida, ou seja, se você tiver um cluster em uma versão já programada para o EOL e não tomar nenhuma ação o cluster será atualizado automaticamente. Outro ponto importante é que o MongoDB Atlas retira versões EOL assim que o prazo termina, por essa razão, não é possível construir um cluster no MongoDB Atlas com uma versão EOL, e também por isso, os prints à seguir são de um upgrade da versão 4.4 para a versão 5.0.

  • Acesse o dashboard do seu cluster e logo depois clique em Edit Configuration: Edit Configuration
  • Na seção Advanced Setting, selecione a versão 5.0: Advanced Settings Se você notar, outras versões do MongoDB estão disponíveis, porém, o upgrade deve ser feito seguindo a ordem das versões, ou seja, você não pode fazer o upgrade da versão 4.4 diretamente para a versão 6.0.
  • No rodapé, clique em Review Changes e logo após confirme as alterações: Review Changes Apply Changes

Um aviso na parte superior nos alerta dizendo que essa mudança de versão é irreversível, ou seja, não podemos alterar um cluster para uma versão anterior. Para assegurar que você terá uma versão de seu banco de dados na versão anterior é importante fazer um backup, ali no próprio Atlas. Com esse backup é possível construir um novo cluster na versão compatível e restaurar o backup.

Ao aplicar as alterações, um plano de execução será montado pelo Atlas, que começará a atualizar cada um dos nós de seu cluster, e como eu disse sem nenhum tipo de downtime.

MongoDB Community Edition Upgrade

Para ambientes onpremisses na versão Community, o procedimento não é "visual" como no Atlas. Na demonstração à seguir utilizarei comandos baseados em uma distribuição Linux RHEL.

  • Faça backup dos dados:

    mongodump --out <caminho_para_a_saida_do_backup>
    

    Existem outras opções para o mongodump, mas não abordaremos aqui neste artigo.

  • Faça backup do arquivo de configuração:

    cp /<caminho_do_arquivo>/mongod.conf /<caminho_do_arquivo>/mongod.conf_old
    
  • Pare o serviço do MongoDB:

    sudo service mongod stop
    
  • Remova os binários da versão anterior:

    sudo yum erase $(rpm -qa | grep mongodb-org)
    sudo yum erase $(rpm -qa | grep mongodb-database-tools)
    
  • Remova o repositório da versão anterior:

    rm -f /etc/yum.repos.d/mongodb-org-4.2.repo
    
  • Crie um novo arquivo para o repositório da versão desejada, neste caso a versão 4.4:

    cat << 'ENDOFDOC' | sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo
    [mongodb-org-4.4]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
    sslverify=0
    ENDOFDOC
    
  • Atualize o repositório e faça a instalação:

    sudo yum update
    sudo yum install -y mongodb-org
    
  • Copie o arquivo de configuração para o caminho correspondente utilizado na versão anterior. Note que no arquivo de configuração, nenhuma alteração foi necessária:

    sudo cp /etc/mongod.conf_old /etc/mongod.conf
    
  • Inicie o serviço:

    sudo systemctl start mongod
    

Execute esses procedimentos primeiro nos servidores secundários, sempre fazendo um nó a cada vez. Fazendo assim, todo o processo também não gerará downtime.

Ao chegar no servidor primário, não se esqueça de fazer um step down, este procedimento iniciará uma eleição, passando o atual primário para secundário e você poderá fazer o shutdown com segurança.

rs.stepDown()
Enter fullscreen mode Exit fullscreen mode

Conclusão

Vimos que o processo de atualização de versão do MongoDB, tanto no MongoDB Atlas, quanto para servidores onpremisses não gera downtime quando executado adequadamente. Também vimos que é muito importante verificar a compatibilidade dos drivers utilizados pela aplicação, bem como verificar se métodos, funções, etc. tenham sido modificados ou até mesmo retirados e fazer as atualizações correspondentes. Além de ter sempre um backup com os dados na versão corrente (antes do upgrade), isso vai garantir que você possa reinstalar, ou construir um novo cluster, para restaurar seus dados.

Se precisar de ajuda, conte com a gente! E não se esqueça de deixar seu like e compartilhar à vontade.

Até mais!

💖 💪 🙅 🚩
delbussoweb
Leandro Domingues

Posted on August 21, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related