Created
March 14, 2023 23:09
-
-
Save aristidesneto/78adad7bea6830332e42291164a3eeec to your computer and use it in GitHub Desktop.
Backup mysql and sync with aws s3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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