Backup dinâmico de banco de dados MySQL

Publicado por Alessandro Librelato (última atualização em 11/07/2016)

[ Hits: 4.727 ]

Download backupMysql.sh




Olá,

Esse é um script para fazer backup dos banco de dados do MySQL de forma dinâmica. Mas o que isso quer dizer? Quer dizer que não é especificado a lista de banco de dados que deve ser feito backup, é pego uma lista de todos os bancos dinamicamente, menos os padrões, e feito um backup de forma individual.

Enjoy ;)

  



Esconder código-fonte

#!/bin/bash
############################################
## Por Alessandro Librelato em 08.04.2013 ##
############################################
## Versao 1.0 ##
################
#set -x

###########################
## VARIAVEIS DE AMBIENTE ##
###########################

data=`date "+%d-%m-%Y"` # Data de execucao do script #
destino=/tmp # para onde sera mandado o backup #
log=/tmp/backup.log # onde sera criado o log #
mailTo="email@dominio \ -c email@dominio" # email com copia #
listaBancos=/tmp/bancos.txt # Arquivos onde eh criada a lista com os bancos #
hostName=`hostname` # Captura o nome do host #
## Configuracao Servidor MySQL ##
mysqlUser="usuario" # usuario do banco #
mysqlPass="senha" # senha do banco #
mysqlHost="localhost" # host onde esta o banco #
mysqlPort="3306" # porta de conexao do host remoto #

############
## INICIO ##
############

# Verifica se o arquivo com a lista dos bancos ja existe, se existe deleta ele #
if [ -e ${listaBancos} ]; then
    rm -f ${listaBancos}
fi
# Deleta todos backups antigos #
rm -f ${destino}/*.gz
# Listando todos os bancos que devem ser feito backup e armazena a lista no arquivo de lista de bancos, com excessao dos bancos padroes do MySql #
echo "show databases;" | mysql --user=${mysqlUser} --password=${mysqlPass} --host=${mysqlHost} | egrep -v 'Database|mysql|information_schema|performance_schema|sys' > ${listaBancos}
# verifica se o arquivo com a lista dos bancos foi criado com sucesso #
if [ -e ${listaBancos} ]; then
    # Le o arquivo gerado com todas as bases do Servidor para a variavel bancos #
    bancos=( `cat "${listaBancos}"` )
    # Efetua o backup com mysqldump e compacta as bases lendo a lista de bancos linha a linha #
    for banco in "${bancos[@]}"; do
        mysqldump --user=${mysqlUser} --password=${mysqlPass} --host=${mysqlHost} ${banco} | gzip > ${destino}/${banco}.${data}.sql.gz
    done
    # Escreve os resultados no log # 
    echo "Final do Backup " >> ${log} ; echo ${data} >> ${log} ; echo "Volume copiado para Backup" >> ${log} ; echo "" >> ${log}
    # Verifica o tamanho dos bancos feito backup e escreve no log #
    for banco in "${bancos[@]}"; do
        echo `du -sh ${destino}/$(echo ${banco}.${data}).sql.gz` >> ${log}
    done
    echo "==============================================" >> ${log}; echo "" >> ${log} ; echo "" >> ${log}
    # Removendo os arquivos desnecessários #
    rm -f ${listaBancos}
    # Envia e-mail de sucesso do Backup #
    cat $log | mail -s "SQL centralizado [BACKUP REALIZADO COM SUCESSO] para $hostName - `date`" $mailTo
    exit 0
else
    # Envia e-mail de erro do Backup #
    echo "" >> ${log} ; echo "O arqquivo com a lista dos bancos nao foi criada corretamente, por favor verifique" >> ${log} ; echo "" >> ${log}
    # cat $log | mail -s "SQL centralizado [ERRO, BACKUP NÃO REALIZADO] para $hostName - `date`" $mailTo
    exit 0
fi

Scripts recomendados

Backup incremental com rsync

BTRFS - Gerenciamento de snapshot por quantidade

Backup de MySQL para uso no cron / cPanel

Backup com Shell Script

Limpeza dos dados do rConfig (ferramenta open-source de gerenciamento de configuração


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts