Backup de bases MySQL
Publicado por Jonas Oliani (última atualização em 23/02/2017)
[ Hits: 3.550 ]
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
Script Backup com Log e envio por Email
Limpeza dos dados do rConfig (ferramenta open-source de gerenciamento de configuração
weekly-backup - backup agendado
BTRFS - Gerenciamento de snapshot por quantidade
Nenhum comentário foi encontrado.
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Vc tem um projeto opensource? link? (5)
Olá quais distribuições recomendam para usar no dia a dia. (3)
minha maquina foi desinstalada o firefox eu preciso reinstalar tentei... (6)
Erro na inicialização do Arch Linux. (1)
windows 11 versao 24H2 não aplicando politicas samba4.21.1 GPO (4)