Backup dinâmico de banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 5.198 ]
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
Fazendo backup durante a semana em pastas distintas, equivalentes ao dia da semana
Script de Backup do Perfil dos Usuários do Sistema em Batch do Windows
Backup de arquivos e banco de dados com envio de e-mail
Backup-Menu - Backup com menu de ajuda, sair e fazer backup
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
Servidor de DNS BIND Ubuntu server (1)
Podem me chamar de 1mbecil :) (4)
Tem como instalar o Untapped no Linux? (2)
diferença entre o Tor baixado pelo Gerenciador de Aplicativos e o Tor ... (3)









