Bom pessoal, o Script contido neste post é uma adaptação do Script de Backup postado no CooperaTI neste link https://cooperati.com.br/2012/09/16/backup-do-mysql-no-linux/ , Nisso um de nossos leitores o aprimorou para sua necessidade e realmente está muito bom. Confiram!
Script de Backup do MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#!/bin/bash # Variavel para formatar data data=`date "+%d-%m-%Y"` # Variavel que define o destino do armazenamento do backup destino="/backup/bancos" # Configuracao Servidor MySQL mysqluser="root" #Usei o root para realizar o bkp de todos os bancos mysqlpass="senha" mysqlhost="localhost" mysqlport="3306" mysqlcharset="utf8" # Variavel para contar o numero de backups contador=`cat $destino/contador` #Listando todos os Bancos echo "show databases;" | mysql --user=$mysqluser --password=$mysqlpass --host=$mysqlhost | grep -v Database > $destino/bancos.txt # Lendo arquivo gerado com todas as bases do Servidor bancos=( `cat "$destino/bancos.txt" `) #Quantidade de dias para manter qtde=5 incluir=$(($contador+1)) excluir=$(($contador-$qtde)) # Corpo do log para envio de e-mail /bin/echo "To: junior@sirius.com.br " > $destino/backup.log /bin/echo "Subject: Rotina de Backup J&J" $data >> $destino/backup.log /bin/echo "" >> $destino/backup.log /bin/echo "=============================================" >> $destino/backup.log /bin/echo "Inicio do Backup " >> $destino/backup.log /bin/echo `date` >> $destino/backup.log # Incrementa Variavel do Contador /bin/echo $incluir > $destino/contador # Exclui o diretorio de backup antigo cd $destino arquivoexcluir=*_$excluir rm -rf $arquivoexcluir # Cria o novo diretorio arquivoincluir=$data"_"$incluir /bin/mkdir -p $destino/$arquivoincluir # Backup com mysqldump cd $destino/$arquivoincluir for banco in "${bancos[@]}" do mysqldump --user=$mysqluser --password=$mysqlpass --host=$mysqlhost $banco > backup_$(echo $banco)_$arquivoincluir.sql done # Compacta a copia de backup cd $destino/$arquivoincluir for banco in "${bancos[@]}" do tar zcfP backup_$(echo $banco)_$arquivoincluir.tgz backup_$(echo $banco)_$arquivoincluir.sql > /dev/null done /bin/echo "Final do Backup " >> $destino/backup.log /bin/echo `date` >> $destino/backup.log /bin/echo "Nome do arquivo" >> $destino/backup.log for banco in "${bancos[@]}" do /bin/echo $destino/$arquivoincluir/backup_$(echo $banco)_$arquivoincluir.tgz >> $destino/backup.log done /bin/echo "Volume copiado para Backup" >> $destino/backup.log for banco in "${bancos[@]}" do /bin/echo `du -sh $destino/$arquivoincluir/backup_$(echo $banco)_$arquivoincluir.tgz` >> $destino/backup.log done /bin/echo "==============================================" >> $destino/backup.log ## Removendo os arquivos desnecessários rm $destino/$arquivoincluir/*.sql rm $destino/bancos.txt ### Envia e-mail do Backup ### sendmail email@email.com.br < $destino/backup.log |
Fiz essas alterações para adequar a minha necessidade de realizar um backup do banco com o rotacionamento dos backups mais antigos.
Espero que ajude!!!
Abs
Créditos: Elcimar Junior