Backup dinâmico de banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 5.149 ]
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 ;)
#!/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
Backup Máquina do Tempo com Rsync
Backup utilizando rsync com envio do log e informativo via e-mail
Script de backup de usuários do sistema
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (8)
Instalação dualboot Windows 11 e Debian 13 (7)
Programa fora de escala na tela do pc (37)
Mint Xfce não mantém a conexão no wi-fi (0)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









