Backup de bases MySQL
Publicado por Jonas Oliani (última atualização em 23/02/2017)
[ Hits: 3.821 ]
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
PKG Sync v4.0 - utilitário para backup de pacotes DEB baixados
Backup de MySql para outro servidor FTP!
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
Instalar Dual Boot, Linux+Windows. (8)
Eaí? Já programou no windows? (2)
Erro ao enviar arquivos para o Storage Synology NAS (0)
Conky, alerta de temperatura alta (17)
De volta para o futuro - ou melhor, para o presente (parte 2) (3)









