top of page

Como fazer backup e restore no MongoDB usando o Docker Desktop

  • Foto do escritor: Rodrigo Saito
    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
Comando executado no Terminal PS, com interação bash
Comando executado no Terminal PS, com interação bash

Para saber qual a versão do SO, digite o comando no bash:


cat /etc/os-release

Terminal em Bash que irá executar o comando
Terminal em Bash que irá executar o comando
Retorno do comando para saber o SO e versão
Retorno do comando para saber o SO e versão

Saia do container, digitando o comando:

exit

Voce estará no Power Shell novamente:


Terminal do Power Shell
Terminal do Power Shell


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 para a versao compatível do SO
Download do arquivo deb para a versao compatível do SO

Download do arquivo deb feito:


Arquivo DEB feito download no Windows
Arquivo DEB feito download no Windows

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
Arquivo deb copiado para dentro do container mongodb1
Arquivo deb copiado para dentro do container mongodb1

Digite o comando abaixo para se conectar ao Container do MongoDB como root:


docker container exec -u 0 -it mongodb1 bash
Conectado ao Container do mongodb1 como root
Conectado ao Container do mongodb1 como root

Para entrar na pasta tmp, digite o seguinte comando:


cd tmp

Para listar os arquivos da pasta tmp, digite:

ls
ls -l
Lista de arquivos da pasta tmp
Lista de arquivos da pasta tmp

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
Pacote deb instalado
Pacote deb instalado

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:


No exemplo, bancos de Dados de Usuário Corp e SistemaERP
No exemplo, bancos de Dados de Usuário Corp e SistemaERP

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
Execução do comando no bash
Execução do comando no bash

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


cd dump
ls -l

Dentro da pasta dump
Dentro da pasta dump

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


cd Corp
ls
arquivos dentro da pasta Corp
arquivos dentro da pasta Corp

Apagando todos os arquivos da pasta dump


Volte a pasta anterior e apague todos os backups


cd ..
mv *

apagando todos os arquivos e pastas de dump
apagando todos os arquivos e pastas de dump

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
Execução de comandos de backup para 1 banco de dados
Execução de comandos de backup para 1 banco de dados

Observe que o Backup foi feito no diretório "dump". Execute os comandos:

cd dump/
ls -l
conteúdo do diretório dump
conteúdo do diretório dump

Entre dentro da pasta Corp e liste os arquivos

cd Corp
ls -l

arquivos de backup do banco Corp
arquivos de backup do banco Corp

Apague todos os arquivos dentro da pasta dump, com o comando:

cd /
rm -rf /dump/*
ls
O diretorio dump foi limpo
O diretorio dump foi limpo

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:

backup feito de uma collection
backup feito de uma collection

Verifique dentro da pasta dump:


ls -l /dump
arquivos dentro da pasta dump
arquivos dentro da pasta 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

backup de uma collection especifica, em uma pasta backupnosql específica
backup de uma collection especifica, em uma pasta backupnosql específica

Liste a pasta criada:

ls -l /backupnosql
lista dos arquivos em uma pasta específica
lista dos arquivos em uma pasta específica

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

execução do comando bsondump
execução do comando bsondump

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

visualizando o arquivo json
visualizando 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()

Drop Database do Corp
Drop Database do Corp

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:

restauração de base de dados, chamada Corporate
restauração de base de dados, chamada 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.












 
 
 
Nunca perca um post. Assine agora!

Caso queira receber noticias sobre o blog, assine!

© 2022 por datalib

  • Ícone do Facebook Cinza
  • Ícone do Linkedin Cinza
bottom of page