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: 9.303 ]

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

Iniciar nova instância do Firefox quando o mesmo não está respondendo

Script Nagios

Criação de Usuarios , Grupo e instalação do servidor de arquivos samba

Teste de desempenho com números primos em BASH

Debian - inicializando VMs (VirtualBox) no boot


  

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