Backup diario rotativo MySQL + Backup semanal mantendo uma cópia local e remota

Publicado por Ailson Ferreira Guerra (última atualização em 09/07/2011)

[ Hits: 8.096 ]

Homepage:

Download MySql_Backup.sh




Este Script foi criado Inicialmente para realizar o Backup no Ubuntu Server da tabela do cacti no Mysql.
Porém ele pode ser utilizado para realizar o Backup de qualquer tabela do Banco Mysql.

O script cria um Backup da tabela diariamente (de Segunda à Sábado) que é sobrescrito na semana seguinte com o NomeDaTablea+DiaSemana e cria também um Backup semanal, no caso no Domingo com o nome da tabela, dia do mês, mês, ano e dia da semana.
Após ser gerado é mantido um Backup Local e é enviado uma copia para uma pasta compartilhada em um servidor Windows.

Para utiliza-lo, abaixe o arquivo e ajuste as variáveis de acordo com a realidade do seu ambiente (Com o intuito de facilitar o entendimento todo o código está comentado).

De permissão de execução
#chmod +x MySql_Backup.sh

Instale o SMBFS para poder realizar a montagem da partição Windows no servidor Linux
#apt-get install smbfs

E por último faça o agendamento no cron.
# contrab -e

Insira a linha abaixo para a execução do script todos os dias as 18 horas.
0 18 * * * DiretórioOndeEstáOScript/MySql_Backup.sh





  



Esconder código-fonte

#!/bin/bash
#Autor: Ailson Ferreira Guerra
#Instale o smbfs
clear
echo '####################################'
echo '#       Ailson Ferreira Guerra     #'
echo '# Script de Backup para MySQL v1.0 #'
echo '#          2011.05.05              #'
echo '####################################'
echo



#variáveis do MySql
HOST=""                     #Local onde esa instalado o Banco
USER=""                     #Usuário do Banco
PASSWORD=""                  #Senha do Banco
DATABASE=""                  #nome da tabela que será feito o backup

# variáveis do script
LOCAL=                     #Onde será criado o BKP
LOCAL2=                     #Onde será Montado
SERVWIN=                  #Caminho onde será guardado os dados
USERLDAP=                   #Usuario do AD
SENHALDP=                  #Senha do Usuário do AD
DATA=`/bin/date +%a%d%m%Y`            #Usar a data do sistema Dia + mês + ano 
NOME="$LOCAL/$DATABASE-$DATA.sql"          #Caminho onde será salvo
DATA2=`/bin/date +%a`                #Usar a data do sistema. Dia da Semana Abreviado
NOME2="$LOCAL/$DATABASE-$DATA2.sql"         #Caminho onde será salvo



   # Checando se o diretório existe. Se não, criando um.
   function diretoriobkp() {
   if [ -e $LOCAL ]; then
    echo -e "\e[31;40;1mDiretório de BKP ok...\e[m"
   else
    echo  -e "\e[31;40;1mCriando diretório ...\e[m"
    mkdir -p $LOCAL
   fi
   }

   # Checando se o diretório existe. Se não, criando um.
   function diretoriomapeamento() {
   if [ -e $LOCAL2 ]; then
    echo -e "\e[31;40;1mDiretório de Mapeamento ok...\e[m"
   else
    echo  -e "\e[31;40;1mCriando diretório ...\e[m"
    mkdir -p $LOCAL2
   fi
   }
   
   #Gera dois Backup, sendo un rotativo ( o que utiliza o nome da semana abreviado) e outro será enviado para 
   #uma pasta compartoilhada do Windows
   function dumpdb() {
   #verifica se é Domingo
   if [ $DATA2 == 'Dom' ]; then
      echo -e "\e[31;40;1mFazendo o Backup de dados da tabela \e[m""\e[35;20;1m$DATABASE\e[m""\e[31;40;1m...\e[m"
      mysqldump -h $HOST -u $USER -p$PASSWORD $DATABASE | gzip -c9 > $NOME.gz
   else
      echo -e "\e[31;40;1mFazendo o Backup de dados da tabela \e[m""\e[35;20;1m$DATABASE\e[m""\e[31;40;1m...\e[m"
      mysqldump -h $HOST -u $USER -p$PASSWORD $DATABASE | gzip -c9 > $NOME2.gz
   fi
   }

   #Monta a partição Windows
   #Lembre se criar no /mnt uma pasta onde será montado o mapeamento
   function monta(){
   mount -t cifs -o username=$USERLDAP,password=$SENHALDP $SERVWIN $LOCAL2
   }

   #Copia os arquivos do Backup para a pasta Windows Mapeada
   function copia(){
   if [ $DATA2 == 'Dom' ]; then
       cp $NOME.gz $LOCAL2
   else
      cp $NOME2.gz $LOCAL2
   fi
   }

   # Desmonta o mapeamento
   function desmonta(){
   umount $LOCAL2
   }

main() {
  echo -e "\e[31;40;1mIniciando Backup do Mysql\e[m"
  diretoriobkp
  diretoriomapeamento
  dumpdb
  monta
  copia
  desmonta
}

main

Scripts recomendados

Cálculo de Horas

Dialog para bash 2

Descompactar vários arquivos ao mesmo tempo de um diretório específico

Script de monitoracao de servicos

consamba.sh


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts