Como fazer backup e restore no MongoDB usando o Docker Desktop
- Rodrigo Saito
- 15 de mar.
- 4 min de leitura
Backups são os meios mais confiáveis que garante a segurança dos nossos dados. No banco de dados MongoDB não seria diferente! É possível fazer backup dos seus dados de diversas formas.
Vamos abranger alguns tipos de backups no MongoDB, a qual podem ser utilizados para pequenos e até médios bancos de dados.
Para isso, precisamos instalar algumas ferramentas de linha de comando do MongoDB.
Versão do Sistema Operacional do Container MongoDB
Certifique-se que o o Container Docker do MongoDB esteja executando.
Abra um terminal no Docker Desktop e digite o comando para entrar em interação bash:
docker exec -it mongodb1 bash

Para saber qual a versão do SO, digite o comando no bash:
cat /etc/os-release


Saia do container, digitando o comando:
exit
Voce estará no Power Shell novamente:

Download do MongoDB Command Line
Vá na página: https://www.mongodb.com/try/download/database-tools faça o download do MongoDB Command Line Database Tools

Download do arquivo deb feito:

Feito o download do pacote DEB, será necessário copiar para dentro do Container Docker do MongoDB.
Para fazer a cópia do arquivo que está no windows para dentro do MongoDB Container, digite o seguinte comando: (Necessário adaptar as suas pastas)
docker cp "C:\Users\rodrigosaito\Downloads\mongodb-database-tools-ubuntu2204-x86_64-100.11.0.deb" mongodb1:/tmp

Digite o comando abaixo para se conectar ao Container do MongoDB como root:
docker container exec -u 0 -it mongodb1 bash

Para entrar na pasta tmp, digite o seguinte comando:
cd tmp
Para listar os arquivos da pasta tmp, digite:
ls
ls -l

Para instalar o pacote deb, digite o seguinte comando no bash do Ubuntu do container do Mongodb:
dpkg -i mongodb-database-tools-ubuntu2204-x86_64-100.11.0.deb

Conectando ao MongoDB Compass
Abra o MongoDB Compass e faça a conexão do MongoDB no Container docker. Observe os bancos de dados e as collections existentes:

Os registros que temos na collection cliente são:

Os registros que temos na collection fornecedor são:

Backups e suas opções
Backup Full
O backup mais simples de todos seria fazer de backup de todos os bancos de dados, de todas as tabelas. No bash do linux, conectado como root, digite o comando:
mongodump

Verifique na pasta /dump do linux, que o MongoDB fez todos os backup:
cd dump
ls -l

Para conferir, entre na pasta Corp e veja os arquivos:
cd Corp
ls

Apagando todos os arquivos da pasta dump
Volte a pasta anterior e apague todos os backups
cd ..
mv *

Ainda restará a pasta Admin. Apague a pasta com o seguinte comando:
rm -rf admin/

Especificando somente um banco de dados. (via mongodump)
Quando queremos fazer backup somente de um banco de dados específico, podemos executar o seguinte comando:
mongodump --db=Corp

Observe que o Backup foi feito no diretório "dump". Execute os comandos:
cd dump/
ls -l

Entre dentro da pasta Corp e liste os arquivos
cd Corp
ls -l

Apague todos os arquivos dentro da pasta dump, com o comando:
cd /
rm -rf /dump/*
ls

Especificando somente uma tabela de um banco de dados. (via mongodump)
Caso queira especificar somente 1 tabela para ser feito backup, digite o comando
mongodump --db=Corp --collection=cliente
Será retornado o seguinte resultado:

Verifique dentro da pasta dump:
ls -l /dump

Especificando uma pasta diferente do padrão (via mongodump)
É possível fazer backup diferente da pasta padrão dump, passando o parametro --out=<nome_da_pasta>
Exemplo de comando:
mongodump --db=Corp --collection=cliente --out=backupnosql

Liste a pasta criada:
ls -l /backupnosql

Podemos observar que os arquivos gerados são json e bson. Os arquivos json são somente metadados json e o arquivo bson é um binário json, mais incorpado e poderoso do que o próprio arquivo de dados json.
Mais informações sobre Bson, pode ser apresentado em: https://www.mongodb.com/pt-br/docs/manual/reference/bson-types/
Visualizando arquivos BSON (via bsondump)
Os arquivos Bson gerados pode ser visualizados pela ferramenta bsondump. Execute o comando abaixo:
bsondump /backupnosql/Corp/cliente.bson

Dessa forma, é possível visualizar o arquivo Json:

Restaurando banco de dados (via mongoexport)
Para fazer a restauração do nosso banco de dados, vamos apagar o banco de dados Corp:
Entre no mongosh, digitando no terminal do linux:
mongosh

Conecte ao banco de dados Corp e exclua o banco de dados conectado
use Corp
db.dropDatabase()

Para restaurar, é necessário usar o comando mongorestore <caminho_do_backup_com_dump> --db=<NomeDaBase>
mongorestore /backupnosql/Corp --db=Corporate

Confira no mongoDB Compass. Dê um refresh na conexão local, e veja que a base de dados foi restaurada como Corporate:

Qual a diferença entre o mongodump e o mongoexport?
Para se fazer backup das bases de dados, o mongodump é melhor. Além dos dados em si, o mongodump vai fazer backup de outros objetos, como indices, metadados etc. (para restaurar o banco de dados, utilize o mongorestore). Essas ferramentas podem ser usaradas para pequenas implementações de banco de dados.
Para fazer backup somente dos dados, o mongoexport pode ser usado. Dessa forma, somente os arquivos JSON, sem nenhum índice, binário, etc serão exportados. (para restaurar a collection, use o mongoimport)
Referências:
MONGODB, Método de backup para um sistema autogerenciado, disponível em: <https://www.mongodb.com/pt-br/docs/manual/core/backups/>, acessado em 15 de mar. 25.
STACK OVERFLOW, Root Password Inside a Docker Container, disponível em <https://stackoverflow.com/questions/28721699/root-password-inside-a-docker-container>, Acessado em 11 de mar. 25.