Skip to content

Instantly share code, notes, and snippets.

@aristidesneto
Created March 14, 2023 23:09
Show Gist options
  • Save aristidesneto/78adad7bea6830332e42291164a3eeec to your computer and use it in GitHub Desktop.
Save aristidesneto/78adad7bea6830332e42291164a3eeec to your computer and use it in GitHub Desktop.
Backup mysql and sync with aws s3
#!/bin/bash
#
# Autor: Aristides Neto
# Email: [email protected]
#
# Data: 11/03/2023
#
# Realiza o backup de bancos de dados MySQL
# Sincroniza com o S3 da AWS
#
# Publicado em https://aristides.dev/script-de-backup-do-mysql-e-armazenamento-no-s3-da-aws/
# Define usuario e senha do banco
USER='root'
PASS='root'
# Datas
DIA=`date +%d`
MES=`date +%m`
ANO=`date +%Y`
DATA_ATUAL=`date +%Y-%m-%d-%H-%M`
# Data de Inicio do Backup
DATA_INICIO=`date +%d/%m/%Y-%H:%M:%S`
# Caminho do arquivo de log
LOG_DIR=/var/log/backup
LOG=$LOG_DIR/backup_db_$ANO$MES$DIA.log
# Diretorio onde serão salvos os backups
DIR_BK=/backups/mysql
# Lista dos bancos de dados que serão realizados o backup
DATABASES=(banco01 banco02)
# Verifica se existe o diretorio para armazenar os logs
if [ ! -d $LOG_DIR ]; then
mkdir $LOG_DIR
fi
# Verifica se existe o diretorio para o backup
if [ ! -d $DIR_BK ]; then
mkdir -p $DIR_BK
fi
# Inicio do backup
echo -e "MYSQLDUMP Iniciado em $DATA_INICIO\n" >> $LOG
# Loop para backupear todos os bancos
for db in "${DATABASES[@]}"; do
# Mysql DUMP
# Para backupear procedures e functions foi adicionado o --routines
echo "...Realizando backup do banco ...........................[ $db ]" >> $LOG
mysqldump --routines -u$USER -p$PASS $db > $DIR_BK/$db'_'$DATA_ATUAL.sql
# Compacta o arquivo sql em BZ2
echo "...Compactando arquivo de backup ........................[ $db ]" >> $LOG
bzip2 $DIR_BK/$db'_'$DATA_ATUAL.sql
# Sincroniza o diretório local com o bucket S3
aws s3 sync $DIR_BK s3://backups-aristides-dev
echo "...Sincronização do diretório de backup com S3 ..........[ OK ]" >> $LOG
done
DATA_FINAL=`date +%d/%m/%Y-%H:%M:%S`
echo -e "\nMYSQLDUMP Finalizado em $DATA_FINAL\n" >> $LOG
# Remove arquivos de backups antigos - 5 dias
find $DIR_BK -type f -mtime +5 -exec rm -rf {} \;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment