Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Backup de banco de dados Mysql
#!/bin/bash
#
# Autor: Aristides Neto
# Email: contato@aristidesneto.com.br
#
# 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 {} \;
@Th14go

This comment has been minimized.

Copy link

Th14go commented Nov 21, 2019

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

@aristidesneto

This comment has been minimized.

Copy link
Owner Author

aristidesneto commented Nov 21, 2019

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.

@Th14go

This comment has been minimized.

Copy link

Th14go commented Nov 22, 2019

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

This comment has been minimized.

Copy link
Owner Author

aristidesneto commented Nov 24, 2019

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
You can’t perform that action at this time.