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:
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
:
- Na seçãoÂ
Advanced Setting
, selecione a versão 5.0:
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:
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:
1mongodump --out <caminho_para_a_saida_do_backup>- Faça backup do arquivo de configuração:
1cp /<caminho_do_arquivo>/mongod.conf /<caminho_do_arquivo>/mongod.conf_old - Pare o serviço do MongoDB:
1sudo service mongod stop - Remova os binários da versão anterior:
12sudo yum erase $(rpm -qa | grep mongodb-org)sudo yum erase $(rpm -qa | grep mongodb-database-tools) - Remova o repositório da versão anterior:
1rm -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:
123456789cat << 'ENDOFDOC' | sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo[mongodb-org-4.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.4.ascsslverify=0ENDOFDOC - Atualize o repositório e faça a instalação:
12sudo yum updatesudo 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:
1sudo cp /etc/mongod.conf_old /etc/mongod.conf - Inicie o serviço:
1sudo systemctl start mongodAo 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.
1rs.stepDown()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!
- Faça backup do arquivo de configuração:
- Faça backup dos dados: