Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Bacula - Gestão de Backup Distribuida - Prática (cont.)

Colaboração: Alexandro Silva

Data de Publicação: 31 de março de 2010

Agora iremos configurar o Bacula Storage e o File Daemon:

Edite o arquivo /etc/bacula/bacula-sd.conf

  Storage {                             # definition of myself
  Name = backup-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  SDAddress = 123.122.123.123
  }
  
  # List Directors who are permitted to contact Storage daemon
  
  Director {
  Name = backup-dir
  Password = "Nlw2vp555z4vep0dasdads"
  }
  
  # Restricted Director, used by tray-monitor to get the
  #   status of the storage daemon
  
  Director {
  Name = backup-mon
  Password = "Mon/GxVW6dfndasdasdsadasd"
  Monitor = yes
  }
  
  # Devices supported by this Storage daemon
  # To connect, the Director's bacula-dir.conf must have the
  #  same Name and MediaType.
  
  Device {
  Name = FileStorage
  Device Type = File
  Media Type = File
  Archive Device = /backup2/storage
  }

Edite o arquivo /etc/bacula/bacula-fd

  # List Directors who are permitted to contact this File daemon
  
  Director {
  Name = "backup-dir"
  Password = "Nlw2vp555z4vep0viaBpeAsdads"
  }
  
  # Restricted Director, used by tray-monitor to get the
  #   status of the file daemon
  
  Director {
  Name = "backup-mon"
  Password = "Mon/GxVW6dfnO+EVBPpkdasdsaP"
  Monitor = yes
  }
  
  # "Global" File daemon configuration specifications
  
  FileDaemon {                          # this is me
  Name = Server-2-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
  FDAddress = 123.123.123.123
  Heartbeat Interval = 15 seconds
  }
  
  # Send all messages except skipped files back to Director
  Messages {
  Name = Standard
  director = backup-dir = all, !skipped, !restored

Com todos os arquivos devidamente configurados inicie os serviços

  invoke-rc.d bacula-director restart
  invoke-rc.d bacula-sd restart
  invoke-rc.d bacula-fd restart

E conecte-se ao Bacula Console:

  bconsole
  Connecting to Director 123.123.123.123:9101
  1000 OK: backup-dir Version: 2.4.4 (28 December 2008)
  Enter a period to cancel a command.
  *

Aparecendo a tela acima tudo está funcionando perfeitamente. Para obter informações sobre os comandos digite help.

Existe uma gama de ferramentas gráficas para gestão do bacula, posso citar o bacula-console-qt. Para ser sincero eu não utilizo ferramentas gráficas. O Bacula Console me atende muito bem nas tarefas diárias.

Backup dos SGBDs

Como informei anteriormente, existe uma limitação do Bacula para fazer cópias de segurança de SGBDs porém não recomendo o backup "a quente" das bases. Todos os SGBDs do mercado possuem ferramentas que geram o dump do banco sem afetar a integridade dos dados. Seguem 02 scripts que utilizo para gerar as cópias tanto do Postgresql quanto do MySQL:

MySQL

Este script é de autoria do meu colega Marcelo Dultra, analista de segurança da FTC.

O arquivo de configuração /etc/bkpmysql.cfg contém as infomações necessárias para a realização do backup

  Nome do Job:Nome do dump:Diretório destino:Usuário do banco:senha:Arquivo log:email envio alerta

Esse é o script

  #!/bin/bash
  
  #
  # Definicao de Variaveis
  #
  
  arqcontrole='/etc/bkpmysql.cfg'
  
  if [ -z "${arqcontrole}" ]
  then
   echo "${0} - Erro Fatal: Arquivo de Configuracao nao existe!"
   exit 1
  fi
  
  titbkp=`cat ${arqcontrole}|cut -d: -f1`
  arqbkp=`cat ${arqcontrole}|cut -d: -f2`
  adibkp=`cat ${arqcontrole}|cut -d: -f3`
  usebkp=`cat ${arqcontrole}|cut -d: -f4`
  senbkp=`cat ${arqcontrole}|cut -d: -f5`
  logbkp=`cat ${arqcontrole}|cut -d: -f6`
  usrbkp=`cat ${arqcontrole}|cut -d: -f7`
  dia=`date '+%u'`
  
  msg_erro()
  {
   echo "ATENCAO ADMINISTRADOR!                       " > /tmp/bkpmysql.msg
   echo "Erro no Backup da Base de Dados Horde - ${serbkp}!" >> /tmp/bkpmysql.msg
   echo ${msg}                                          >> /tmp/bkpmysql.msg
   mail ${usrbkp} -s "${serbkp} - Erro Backup DB Horde" </tmp/bkpmysql.msg
  }
  
  echo "`date '+%d/%m/%y - %H:%M:%S -'` INICIO DA ROTINA" > ${logbkp}
  
  case ${dia} in
    1) sem="Segunda";;
    2) sem="Terca";;
    3) sem="Quarta";;
    4) sem="Quinta";;
    5) sem="Sexta";;
    6) sem="Sabado";;
    7) sem="Domingo";;
    *) msg="Dia da Semana nao definido"
       msg_erro
       echo "`date '+%d/%m/%y - %H:%M:%S -'` Erro! Dia da Semana Invalido!" >> ${logbkp}
       exit 1
  esac
  
  if [ -z "${titbkp}" -o -z "${arqbkp}" -o -z "${adibkp}" -o -z "${usebkp}" -o -z "${senbkp}" -o -z "${logbkp}" -o -z "${usrbkp}" -o -z "${sem}" ]
  then
        echo "`date '+%d/%m/%y - %H:%M:%S -'` Parametros Invalidos!" >> ${logbkp}
        msg="`date '+%d/%m/%y - %H:%M:%S -'` Parametros Invalidos!"
   msg_erro
   exit 1
  fi
  
  cd ${adibkp}
  
  echo "`date '+%d/%m/%y - %H:%M:%S -'` Gerando dump do banco ..." >> ${logbkp}
  
  mysqldump -u ${usebkp} -p${senbkp} --add-locks --add-drop-table --all-databases --flush-logs --disable-keys --result-file=${arqbkp}.${sem} 2>> ${logbkp}
  
  if [ ${?} -eq 0 ]
  then
        echo "`date '+%d/%m/%y - %H:%M:%S -'` Dump Gerado!"                  >> ${logbkp}
  else
        echo "`date '+%d/%m/%y - %H:%M:%S -'` Erro na realizacao do Backup!" >> ${logbkp}
        msg="`date '+%d/%m/%y - %H:%M:%S -'` Erro na realizacao do Backup!"
   msg_erro
   exit 1
  fi
  
  echo "`date '+%d/%m/%y - %H:%M:%S -'` Compactando arquivo do dump ..." >> ${logbkp}
  
  gzip -f ${arqbkp}.${sem}
  
  if [ ${?} -eq 0 ]
  then
        echo "`date '+%d/%m/%y - %H:%M:%S -'` Arquivo Compactado!" >> ${logbkp}
  else
        echo "`date '+%d/%m/%y - %H:%M:%S -'` Erro na compactacao!" >> ${logbkp}
        msg="`date '+%d/%m/%y - %H:%M:%S -'` Erro na compactacao!!"
        msg_erro
        exit 1
  fi
  
  echo "`date '+%d/%m/%y - %H:%M:%S -'` FIM DA ROTINA DE BACKUP ..." >> ${logbkp}
  
  exit

Postgresql

  #!/bin/bash
  DATE=`date +"%Y-%m-%d"`
  HOSTNAME=`hostname`
  DIR=/var/bkpdb
  d=rtdb
  su postgres -c "pg_dump $d | gzip -c > $DIR/$d.$HOSTNAME.$DATE.out.gz"

Caso de uso - Colivre

A Colivre utiliza o Bacula para fazer o backup de cerca de 8 servidores espalhados pelo globo. A política adotada é de cópias Full todos os domingos e cópias diferenciais de segunda a sábado.

Num teste de restore realizado semanalmente, foram restaurados cerca de 8 GB em 2 min. isso porque os servidores estavam na mesma rede. Já o restore de um servidor remoto com o mesmo tamanho de arquivo levou cerca de 10 min.

Os arquivos (volumes) são gravados em 03 storages (partições) diferentes, com a reciclagem eles ocupam menos de 40% dos discos.

Alcançamos esse nível de gerenciamento de backup com muito estudo, paciência e análise. Levando cerca de 15 dias, periodo de 20/12 a 03/01, para deixar a rotina redonda, só é preciso monitorar diariamente os logs e de vez em quando fazer uma intervenção.

O Bacula tem se mostrado uma ferramenta madura, escalável, segura e confiável tranquilizando minhas poucas noites de sono.

Leituras Obrigatórias

Veja a relação completa dos artigos de Alexandro Silva

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1000 votos)

Opinião dos Leitores

Gerson Geraldo Viergutz
19 Jan 2012, 16:53
Ótima Dica. Estarei testando este software na empresa.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Expressões Regulares - Uma abordagem divertida 3ª edição