Upgrade de versão no MongoDB
Tags: mongodb, nosql
Published: 2023-08-21 14:18:58

---
title: Upgrade de versão no MongoDB
published: true
description: Veja como fazer o upgrade de versão do MongoDB
tags: mongodb, nosql
cover_image: https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iy2voucvzlk797cnv31e.png
# Use a ratio of 100:42 for best results.
# published_at: 2023-08-21 13:57 +0000
---
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](https://www.mongodb.com/docs/drivers/) você pode consultar todos os drivers oficialmente suportados pelo MongoDB bem como as bibliotecas suportadas pela comunidade. Ao selecionar [C#](https://www.mongodb.com/docs/drivers/csharp/current/compatibility/) por exemplo, você pode ver a compatibilidade entre as versões:
![.NET Driver Compatibility](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/amg8793ydw4y5mpxztlt.png)
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](https://www.mongodb.com/docs/v4.4/release-notes/4.4/), 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](https://www.mongodb.com/docs/v4.4/release-notes/4.4-compatibility/) 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ccddqi2me1sfbihrc4p8.png)
- Na seção `Advanced Setting`, selecione a versão 5.0:
![Advanced Settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ooyvvw60jr7nc3mbvyo.png)
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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3j6v5a2dg4qms3f9vwxn.png)
![Apply Changes](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8vg7yfdjsm9pm3f6fdf.png)

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:
    ```bash
    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:
    ```bash
    cp /<caminho_do_arquivo>/mongod.conf /<caminho_do_arquivo>/mongod.conf_old
    ```
- Pare o serviço do MongoDB:
    ```bash
    sudo service mongod stop
    ```
- Remova os binários da versão anterior:
    ```bash
    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:
    ```bash
    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:
    ```bash
    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:
    ```bash
    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:
    ```bash
    sudo cp /etc/mongod.conf_old /etc/mongod.conf
    ```
- Inicie o serviço:
    ```bash
    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.
```javascript
rs.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!