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

Top comments (0)