Backup de bases MySQL
Publicado por Jonas Oliani (última atualização em 23/02/2017)
[ Hits: 3.794 ]
Download backup_mysql_vivaolinux.sh
Script criado para efetuar dump de todas as bases MySQL. Utiliza a aplicação sendEmail ( http://caspian.dotconf.net/menu/Software/SendEmail/ ) para envio do log de execução.
Para instalação no Debian, executar:
# apt-get update && apt-get install sendemail
Necessário criar um usuário para efetuar o dump das bases com as permissões corretas, descritas no próprio script.
Cria automaticamente a estrutura de backup dentro de /opt, sendo:
- /opt/backup/mysql o diretório de backup das bases
- /opt/backup/log o log de backup
Testado somente no Debian.
#!/bin/bash
#################
#Adicionar usuário ao mysql para executar o backup
# GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO usuario@host identified by 'senha';
#Necessário instalação do SendEmail para envio de emails de logs (não é necessário um MX no servidor de banco)
#Variáveis
###################################################
DBUSER='backupdb'
DBPASS='backupdb'
DBHOST='localhost'
DIRBKPDB=/opt/backup
DIRLOG=/opt/backup/log
DIRBKP=/opt/backup/mysql
ASSUNTOEMAL='ASSUNTOEMAL'
EMAILFROM='EMAILFROM@EMAIL.DOMINIO'
EMAILTO='EMAILTO@EMAIL.DOMINIO'
SMTP='SMTP.DOMINIO'
SMTPPASS='SMTPPASS'
###################################################
#VERIFICA DIRETORIO DE BACKUP
if /usr/bin/test ! -d $DIRBKPDB
then
echo -e "\033[33;1m Diretorio $DIRBKPDB nao encontrado. Criando... \033[m"
/bin/mkdir $DIRBKPDB 2> /dev/null
fi
#VERIFICA DIRETORIO DE LOG
if /usr/bin/test ! -d $DIRLOG
then
echo -e "\033[33;1m Diretorio $DIRLOG nao encontrado. Criando... \033[m"
/bin/mkdir $DIRLOG 2> /dev/null
fi
#VERIFICA SENDEMAIL ESTÁ INSTALADO
SENDEMAIL=$(/usr/bin/which sendemail)
if /usr/bin/test -z $SENDEMAIL
then
echo -e "\033[33;1m SendEmail nao encontrado. Efetuar a instalacao. Finalizando... \033[m"
exit 0
fi
echo -e "<html>\n<body>" > $DIRLOG/backup.log
echo "Executando Backup Mysql $ASSUNTOEMAL - $(date) <br><br>" >> $DIRLOG/backup.log
#FUNCAO PARA ENVIO DE EMAILS
ENVIAEMAIL () {
MENSAGEM=$(cat $DIRLOG/backup.log)
$SENDEMAIL -f "$EMAILFROM" -t "$EMAILTO" -u "$ASSUNTOEMAL" -m "$MENSAGEM" -s "$SMTP":587 -xu "$EMAILFROM" -xp "$SMTPPASS" -o tls=no >> $DIRLOG/backup.log
}
#REMOVE BACKUPS ANTIGOS
if /usr/bin/test -d $DIRBKP
then
/bin/rm -r $DIRBKP &> /dev/null
/bin/mkdir $DIRBKP &> /dev/null
else
/bin/mkdir $DIRBKP &> /dev/null
fi
#Verifica conexao com banco
CONDB=1
while [ $CONDB -le 4 ]; do
TESTADB=$(mysqlshow -u $DBUSER -p"$DBPASS" -h $DBHOST 2>> $DIRLOG/backup.log | grep Databases | sed 's/ //g')
if test -z $TESTADB
then
if [ $CONDB -eq 4 ]; then
echo "<br><font color=red> Numero de tentativas de conexao ao BANCO excedida ($CONDB). Finalizando... </font><br>" >> $DIRLOG/backup.log
ENVIAEMAIL
exit 0
fi
echo "<br><font color=red> Nao foi possivel conectar ao BANCO. Aguardando 5min. Tentativa $CONDB </font><br>" >> $DIRLOG/backup.log
sleep 300
else
break
fi
(( CONDB++ ))
done
#Executa o dump das bases e compacta
LISTADB=$(/usr/bin/mysqlshow -u $DBUSER -p"$DBPASS" -h $DBHOST | grep -v 'Databases\|----\|_schema' | sed 's/|//g')
if test -z $LISTADB 2> /dev/null
then
echo "<font color=red> Usuario $DBUSER sem permissao para DUMP de bases </font><br>" >> $DIRLOG/backup.log
echo "<font color=red>Executar GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO usuario@host identified by 'senha'; </font>" >> $DIRLOG/backup.log
else
for DUMP in $LISTADB; do
/usr/bin/mysqldump --routines --events -u $DBUSER -p"$DBPASS" $DUMP -h $DBHOST > $DIRBKP/$DUMP.sql 2>> $DIRLOG/backup.log
if [ $? -eq 0 ]
then
/bin/gzip $DIRBKP/$DUMP.sql 2>> $DIRLOG/backup.log
if [ $? -eq 0 ]
then
echo "BACKUP <b> $DUMP </b> EXECUTADO COM <font color=blue> SUCESSO </font><br>" >> $DIRLOG/backup.log
else
echo "<font color=red> COMPACTACAO DO DUMP $DUMP EXECUTADA COM FALHA </font><br>" >> $DIRLOG/backup.log
fi
else
echo "<font color=red>DUMP $DUMP EXECUTADO COM FALHA </font><br>" >> $DIRLOG/backup.log
fi
done
fi
echo "</html>\n</body>" >> $DIRLOG/backup.log
ENVIAEMAIL
sync_local - backup/restauração local
Script de backup de usuários do sistema
Backup de MySql para outro servidor FTP!
Backup dinâmico de banco de dados MySQL
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Desenvolvi um programa de hot corner (você colocar o mouse nos cantos)... (3)
Pendrive Bootable [RESOLVIDO] (4)









