DEV Community

Railander Marques
Railander Marques

Posted on

Dump DocumentDB (collections) para AWS S3

Olá e bem-vindo a este tutorial técnico sobre como fazer o backup de coleções do DocumentDB e armazená-las no AWS S3. Neste guia, você aprenderá como executar um script que automatiza o processo de dump das coleções, armazenando os dados em formato JSON, compactando-os e enviando-os para o AWS S3. Essa prática é fundamental para garantir a integridade dos seus dados e criar cópias de segurança eficientes.


Explicação:

Este script acessa o DocumentDB, faz o backup de todas as collections em formato .json de uma base específica, armazena-os em um diretório chamado "export", compacta todos esses arquivos .json em um arquivo .gz e armazena o arquivo compactado no diretório "export_gz", adicionando a data do dia. Após a compactação, envia os arquivos .gz para o bucket específico e apaga o conteúdo das pastas "export" e "export_gz".

  • Neste caso eu uso um disco magnético separado do sistema operacional, para rotatividade do backup.
  • É necessário baixar a .pem do DocumentDB e adicionar no sistema operacional, tem menção dela no script.

1- Listagem de diretório da automação:

Image description

  • collections.txt = lista das collections da database que irá fazer o backup
  • export = pasta de destino dos arquivos .json de cada collection
  • export_gz = pasta de destino das colections em .json compactado em .gz
  • mongodump.sh = script para fazer o dump (necessário dar permissão de execução no arquivo)

2- Script

#!/bin/bash

# nome do arquivo com a lista de coleções
collection_file=/backup/collections.txt

# nome do arquivo de saída para cada coleção
output_file_prefix=db_dump

# configurações do banco de dados
host=cluster-mongodb.cluster-ro-xxxxxxxxxxxxxxxx.us-east-1.docdb.amazonaws.com:27017
database=sua_database
username=seu_usuario
password=sua_senha
sslCAFile=/home/ubuntu/rds-combined-ca-bundle.pem

# loop sobre as coleções no arquivo
while read collection; do
    echo "Exportando coleção \$collection..."
    # exporta a coleção atual
    mongoexport --ssl \
        --host="\$host" \
        --collection="\$collection" \
        --db="\$database" \
        --out="/backup/export/\$output_file_prefix.\$collection.json" \
        --username="\$username" \
        --password="\$password" \
        --sslCAFile "\$sslCAFile"
done < "\$collection_file"
tar -cvzf /backup/export_gz/documentdb_dump_\$(date +%d-%m-%Y).tar.gz /backup/export/
aws s3 sync /backup/export_gz s3://export-backup-documentdb
sudo rm -rf /backup/export_gz/*.*
sudo rm -rf /backup/export/*.*
Enter fullscreen mode Exit fullscreen mode

Observações:

  • collection_file = arquivo com o nome de todas as collections do banco que irá fazer backup;
  • output_file_prefix = prefixo de saida para coleção (Não é necessário alterar);
  • host = endpoint do banco com prefixo "ro”, read only;
  • username = usuário master do banco;
  • password = senha do banco;
  • sslCAFile = local onde o arquivo pem do DocumentDB esta alocado dentro do sistema operacional.
  • A instância necessita ter role para acesso ao AWS S3 e os pacotes aws-cli e tar instalados.

Strings:

  • out = pasta que ira armazenar os arquivos das collections em .json, adicionando o nome do prefixo + nome da collection;
  • Linha com “tar” = essa linha compacta em .gz todos os arquivos da pasta /backup/export/, adicionando a data e o armazena o .gz na pasta /backup/export_gz;
  • Linhas com “sudo rm” = Limpa os diretórios para a Proxima execução do backup.

Output:

Image description

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more