MongoDB Academy · Aula

mongodump e mongorestore para backups completos

Você criará um despejo BSON completo de um banco de dados e o restaurará em outro cluster com mongorestore.

Aula 3 de 413 etapas

mongodump e mongorestore para backups completos é uma aula grátis de MongoDB Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de MongoDB Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de MongoDB Academy inclui 4 aulas no total.

Por que usar mongodump para backups?

mongodump cria um instantâneo BSON binário de um banco de dados ou collection. Diferentemente de mongoexport, que produz JSON legível por pessoas, o mongodump preserva exatamente todas as informações dos tipos BSON — ObjectIds, datas, decimais e dados binários — sem nenhuma perda de fidelidade. Isso faz dele a ferramenta correta para backups completos de bancos de dados e migrações entre clusters do MongoDB, enquanto o mongoexport é melhor para o compartilhamento seletivo de dados.

Uso básico do mongodump

Executar mongodump sem argumentos despeja todos os bancos de dados da instância local do MongoDB em um diretório dump/. Especifique --uri, --db e, opcionalmente, --collection para restringir o escopo. O diretório de saída contém um subdiretório por banco de dados, cada um com arquivos .bson e .metadata.json para cada collection.

# Dump the entire 'myapp' database
mongodump \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --out /backups/myapp-2024-01-15

# Output structure:
# /backups/myapp-2024-01-15/
#   myapp/
#     users.bson
#     users.metadata.json
#     products.bson
#     products.metadata.json

Despejando uma única collection

Use --collection para despejar apenas uma collection de um banco de dados. Isso produz um único arquivo .bson e o .metadata.json correspondente (que armazena as definições dos índices). Despejos de collections específicas são úteis para extrair uma única collection para migração sem fazer backup do banco de dados inteiro.

# Dump only the 'orders' collection
mongodump \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --collection orders \
  --out /backups/orders-backup

# Result: /backups/orders-backup/myapp/orders.bson
#         /backups/orders-backup/myapp/orders.metadata.json

Compactando o despejo

Despejos BSON grandes podem consumir uma quantidade significativa de espaço em disco. Use --gzip para compactar os arquivos de saída à medida que são gravados. Cada arquivo .bson se torna um arquivo .bson.gz, normalmente alcançando uma compactação de 5 a 10 vezes para collections de documentos típicas. A compactação é executada pelo processo mongodump e exige uma opção --gzip correspondente no mongorestore para descompactar.

# Create a compressed backup
mongodump \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --gzip \
  --out /backups/myapp-compressed-2024-01-15

# Files are now .bson.gz:
# /backups/myapp-compressed-2024-01-15/myapp/users.bson.gz
# /backups/myapp-compressed-2024-01-15/myapp/orders.bson.gz

Arquivando em um único arquivo

Use --archive para gravar todo o despejo em um único arquivo de arquivo, em vez de uma árvore de diretórios. Você também pode encaminhá-lo para gzip ou aws s3 cp para fazer o backup e o envio compactados em uma única etapa. Esse é o formato de despejo mais compacto e portátil para automatizar backups no CI ou em tarefas cron.

# Archive + compress to a single file
mongodump \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --archive=/backups/myapp-2024-01-15.archive.gz \
  --gzip

# Or pipe to gzip
mongodump \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --archive | gzip > /backups/myapp-2024-01-15.gz

Uso básico do mongorestore

mongorestore lê um diretório ou arquivo de arquivo criado pelo mongodump e insere os documentos em um cluster MongoDB de destino. Ele recria as collections com suas definições de índices (a partir dos arquivos .metadata.json) depois que os dados são carregados. Especifique o cluster de destino com --uri e o diretório ou arquivo de origem com --dir ou --archive.

# Restore the full myapp database from a directory backup
mongorestore \
  --uri 'mongodb://restore-target:27017' \
  --dir /backups/myapp-2024-01-15

# Restore a gzip-compressed directory backup
mongorestore \
  --uri 'mongodb://restore-target:27017' \
  --gzip \
  --dir /backups/myapp-compressed-2024-01-15

Restaurando com outro nome de banco de dados

Por padrão, mongorestore restaura usando o mesmo nome de banco de dados presente no despejo. Use --nsFrom e --nsTo (namespace de/para) para restaurar com outro nome de banco de dados ou collection. Isso é essencial ao clonar dados de produção em um banco de dados de homologação com outro nome.

# Restore 'myapp' from dump into 'myapp_staging'
mongorestore \
  --uri 'mongodb://localhost:27017' \
  --nsFrom 'myapp.*' \
  --nsTo 'myapp_staging.*' \
  --dir /backups/myapp-2024-01-15

A opção --drop na restauração

Assim como o mongoimport, o mongorestore tem uma opção --drop que remove cada collection antes de restaurá-la. Sem --drop, o mongorestore mescla os documentos restaurados com os dados existentes — útil para restaurações parciais. Com --drop, você obtém uma substituição limpa da collection, o que é mais seguro para restaurações completas de bancos de dados, evitando misturar dados obsoletos com o backup.

# Drop and fully replace all collections during restore
mongorestore \
  --uri 'mongodb://localhost:27017' \
  --db myapp \
  --drop \
  --dir /backups/myapp-2024-01-15/myapp

Restauração paralela com --numParallelCollections

Para bancos de dados com muitas collections, o mongorestore pode restaurar várias collections em paralelo. Use --numParallelCollections (padrão: 4) para aumentar o paralelismo em servidores com alta capacidade de E/S. Mais restaurações paralelas reduzem o tempo total de restauração, mas aumentam o uso de memória e CPU tanto no client quanto no servidor.

# Restore 8 collections in parallel
mongorestore \
  --uri 'mongodb://restore-target:27017' \
  --dir /backups/myapp-2024-01-15 \
  --numParallelCollections 8

Automatizando backups com uma tarefa cron

Automatize backups diários executando um script de shell em uma tarefa cron. O script cria um diretório de backup com registro de data e hora, executa o mongodump, compacta o resultado e, opcionalmente, faz o envio para o S3 ou outro armazenamento remoto. Sempre verifique o código de saída do mongodump para detectar backups com falha antes que o backup anterior seja substituído.

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/myapp-$DATE"

mongodump \
  --uri "$MONGO_URI" \
  --db myapp \
  --gzip \
  --out "$BACKUP_DIR"

if [ $? -eq 0 ]; then
  echo "Backup successful: $BACKUP_DIR"
else
  echo "Backup FAILED!"
  exit 1
fi

Backups Point-in-Time no Atlas

O MongoDB Atlas fornece backups automatizados Point-in-Time (PIT) que capturam instantâneos a cada 6 horas e permitem restaurar para qualquer segundo dentro da janela de retenção (até 35 dias nos níveis M10 ou superiores). Os backups do Atlas não usam mongodump — eles aproveitam instantâneos no nível do sistema de arquivos, no nível do mecanismo de armazenamento, para fazer backups sem impacto. No MongoDB autogerenciado, o mongodump é o principal mecanismo de backup, mas é um backup lógico e não consegue capturar transações em andamento.

Verificação rápida

Teste sua compreensão dos conceitos de MongoDB e bancos de dados NoSQL desta lição.

Recapitulação da lição

Nesta lição, você aprendeu: mongodump cria backups BSON binários preservando todas as informações de tipo, mongorestore lê esses despejos e recria as collections com seus índices e --drop, --nsFrom/--nsTo e --gzip são opções essenciais para fluxos de trabalho de backup em produção. A seguir, vamos escrever scripts de inicialização do Node.js para carregar dados programaticamente no MongoDB durante o desenvolvimento.

Grátis para começar

Aprenda JavaScript com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “mongodump e mongorestore para backups completos” é grátis?

Sim — o texto completo de “mongodump e mongorestore para backups completos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de MongoDB Academy, atualize para CoddyKit PRO. O curso de MongoDB Academy inclui 4 aulas no total.

O que vou aprender em “mongodump e mongorestore para backups completos”?

Você criará um despejo BSON completo de um banco de dados e o restaurará em outro cluster com mongorestore. Você pratica MongoDB Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar MongoDB Academy?

Nenhuma experiência prévia é necessária. MongoDB Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “mongodump e mongorestore para backups completos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de MongoDB Academy?

Sim. Cada aula de MongoDB Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. mongoimport: carregando arquivos JSON e CSV
  2. mongoexport: exportando coleções para arquivos
  3. mongodump e mongorestore para backups completos
  4. Inserindo dados com scripts Node.js
← Voltar para MongoDB Academy