Skip to content

Instantly share code, notes, and snippets.

@aristidesneto
Last active December 16, 2020 20:33
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aristidesneto/dee35d878fac3d031d218630f40ea925 to your computer and use it in GitHub Desktop.
Save aristidesneto/dee35d878fac3d031d218630f40ea925 to your computer and use it in GitHub Desktop.
Backup de banco de dados Mysql
#!/bin/bash
#
# Autor: Aristides Neto
# Email: falecom@aristides.dev
#
# Data: 09/06/2019
#
# Realiza o backup de bancos de dados MySQL
#
# 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=/var/backups/database
# 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 "MYSQLDUMP Iniciado em $DATA_INICIO" >> $LOG
# Loop para backupear todos os bancos
for db in "${DATABASES[@]}"; do
# Mysql DUMP
# Para backupear procedures e functions foi adicionado o --routines
mysqldump --routines -u$USER -p$PASS $db > $DIR_BK/$db'_'$DATA_ATUAL.sql
echo "Realizando backup do banco ...............[ $db ]" >> $LOG
# Compacta o arquivo sql em BZ2
bzip2 $DIR_BK/$db'_'$DATA_ATUAL.sql
done
DATA_FINAL=`date +%d/%m/%Y-%H:%M:%S`
echo "MYSQLDUMP Finalizado em $DATA_FINAL" >> $LOG
# Remove arquivos de backups antigos - 5 dias
find $DIR_BK -type f -mtime +5 -exec rm -rf {} \;
@thiagolopes-dev
Copy link

Boa tarde Aristides, top o script, porém se tiver triggers e procedures será ignorado no backup, adiciona a regra , --routines --triggers

@aristidesneto
Copy link
Author

Boa tarde Aristides, top o script, porém se tiver triggers e procedures será ignorado no backup, adiciona a regra , --routines --triggers

Tudo certo Thiago?!
Para backupear as procedures e functions, faz se necessário o parâmetro --routines, para as triggers, não é necessário --triggers pois essa opção já é padrão do Mysql.

Obrigado pela contribuição... vou atualizar o script com essa informação.

@thiagolopes-dev
Copy link

Tudo na paz, que isto Aristides, é o costume de passar o ---triggers rs, bom saber que é padrão :). Uma outra opção legal seria acrescentar -alv para mostrar junto ao log as tables percorridas e se foi tudo certo no backup.

@aristidesneto
Copy link
Author

Opa tudo certo Thiago?! Agradeço por mais uma dica!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment