DEV Community

Marcelo Michels
Marcelo Michels

Posted on

11 1

Criando e restaurando backup no MongoDB

Criando backup

Para criar o backup precisamos estar em uma maquina com o Mongo instalado para ter acesso ao comando mongodump em nosso terminal. Com ele será possível fazer backup do próprio banco local ou de um banco remoto.

Criando o backup de todos os bancos existentes naquele servidor:

mongodump --uri "mongodb://mongodb0.example.com:27017" --gzip
# --uri  = string de conexão com o mongo  
# --gzip = indica que deseja gerar um backup compactado
Enter fullscreen mode Exit fullscreen mode

Criando o backup de um banco de dados especifico:

mongodump --uri "mongodb://mongodb0.example.com:27017" --gzip -d nomedobanco
# --uri  = string de conexão com o mongo  
# --gzip = indica que deseja gerar um backup compactado
# -d     = nome de um determinado banco, qual deseja-se fazer o backup  
Enter fullscreen mode Exit fullscreen mode

O resultado do comando mongo mongodump criará uma pasta chamada dump dentro do diretório qual foi executado o comando (exceto caso seja especificado um outro caminho).

Existem mais opções que podem ser adicionadas ao comando mongodump na documentação oficial.

Restaurando backup

Para restaurar o backup criado na etapa anterior vamos utilizar o comando mongorestore passando a string de conexão seguida da pasta qual contem o conteúdo gerado pelo mongodump anteriormente.

Restaurando um backup com vários bancos

mongorestore --uri "mongodb://mongodb0.example.com:27017" --gzip ./dump/
# --uri  = string de conexão com o mongo
# --gzip = indica que deseja gerar um backup compactado
Enter fullscreen mode Exit fullscreen mode

Restaurando um backup de um banco especifico

mongorestore --uri "mongodb://mongodb0.example.com:27017" --gzip ./dump/nomedobanco -d nomedobanco
# --uri  = string de conexão com o mongo
# --gzip = indica que deseja gerar um backup compactado
# -d     = nome de um determinado banco, qual deseja-se fazer o backup  
Enter fullscreen mode Exit fullscreen mode

Existem mais opções que podem ser adicionadas ao comando mongorestore na documentação oficial.

Script para criar o backup e salvar no AWS S3

Caso queira criar uma rotina de backup automatizado para executar o comando de backup periodicamente podemos criar um script para realizar essa tarefa.

Criar um arquivo shell script com o seguinte conteúdo:

mongodump --uri "mongodb://mongodb0.example.com:27017" --gzip
D=$(date '+%Y-%m-%d-%H')
zip -r $D.zip ./dump/
aws s3 cp $D.zip s3://<s3-bucket-name>/$D --profile michels
rm -rf ./dump/
rm -f $D.zip
Enter fullscreen mode Exit fullscreen mode

No exemplo acima estamos realizando as seguintes instruções em cada linha:

  1. Criar o backup do mongodb com mongodump.
  2. Declarar variável chamada "D" que vai armazenar a data atual no padrão "ANO-MES-DIA-HORA".
  3. Criar um .zip da pasta dump que foi criada no passo 1.
  4. Copiar pra um bucket do S3 o .zip criado no passo 3.
    1. Estou considerando que o aws cli já esteja instalado e configurado.
    2. Fique a vontade para utilizar outro serviço para essa etapa.
  5. Remover a pasta dump para não ficar lixo na pasta.
  6. Remover o arquivo .zip criado para não ficar lixo na pasta.

Agora, caso esteja utilizando linux, basta adicionar uma chamada para esse script dentro do crontab da maquina.

Leia mais sobre crontab aqui, com ele é possível executar tarefas no seu terminal periodicamente de forma bem dinâmica e flexível.

Um exemplo seria executar o nosso script de backup todos os dias as 2hrs e as 14hrs. Para isso basta executar o comando crontab -e em seu terminal e editar o arquivo aberto adicionando uma nova linha com o conteúdo abaixo:

0 2,14 * * * cd /path/to/script/ && sh backup-mongo-to-s3.sh
Enter fullscreen mode Exit fullscreen mode

Agora basta salvar o arquivo e quando chegar na hora configurada o arquivo backup-mongo-to-s3.sh será executado.

Conclusão

Neste post aprendemos criar e restaurar um backup do MongoDB, assim como agendar uma tarefa para executar esse backup periodicamente e salva-lo no S3 da AWS.

API Trace View

How I Cut 22.3 Seconds Off an API Call with Sentry 🕒

Struggling with slow API calls? Dan Mindru walks through how he used Sentry's new Trace View feature to shave off 22.3 seconds from an API call.

Get a practical walkthrough of how to identify bottlenecks, split tasks into multiple parallel tasks, identify slow AI model calls, and more.

Read more →

Top comments (0)

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay