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:
-
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/*.*
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:
Top comments (0)