Backup de bases MySQL
Publicado por Jonas Oliani (última atualização em 23/02/2017)
[ Hits: 3.652 ]
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
Restauração de backup Firebird a partir de um arquivo .7Z contendo um GBK
Backup Database MySQL Automatizado
Nenhum coment�rio foi encontrado.
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Visualizar arquivos em formato markdown (ex.: README.md) pelo terminal
Dando - teoricamente - um gás no Gnome-Shell do Arch Linux
Como instalar o Google Cloud CLI no Ubuntu/Debian
Mantenha seu Sistema Leve e Rápido com a Limpeza do APT!
Procurando vídeos de YouTube pelo terminal e assistindo via mpv (2025)
Alguém já usou o framework Avalonia para desenvolver interfaces de usu... (2)
Gestão de Ambiente em uma rede Linux (3)