quarta-feira, março 31, 2010

[Dicas-L] Bacula - Gestão de Backup Distribuida - Prática (cont.)

[Dicas-L] - Bacula - Gestão de Backup Distribuida - Prática (cont.)

Caso não consiga visualizar esta mensagem, clique aqui.
URL deste artigo: http://www.Dicas-L.com.br/dicas-l/20100331.php

Logotipo Dicas-L, por Ricardo Burile

Acompanhe a Dicas-L no twitter

Treinamentos SAVANT Tecnologia da Informação - Março e Abril 2010

OpenLDAP - (brinde: livro)
Segurança com Linux - iptables/proxy-squid/vpn - curso avançado
Certificação LPI-101 e LPI-102 - (promoção especial confira!)
Exames/Simulados LPI - 20/03/2010 (LPIC-1) e 27/03/2010 (LPIC-2), 17/04/2010 (LPIC-1) e 24/04/2010
Treinamentos oficiais RedHat - Certificação RHCE
Mais informações pelo telefone: (11) 2925-8724
ou pelo email cursos@savant.com.br
Saiba mais sobre nossos treinamentos

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

+ comente esta mensagem

Aprenda inglês em casa
Curso estruturado com o que existe de melhor e mais rápido em estratégias e técnicas de aprendizado para adultos.
Conheça as aulas experimentais.

Dicas-L: Uma dica por dia desde 3 de março de 1997
As mensagens da lista Dicas-L são veiculadas diariamente
para 29625 assinantes.
Newsfeed RSS: http://www.dicas-l.com.br/index.xml
Caso não queira mais receber estas mensagens clique aqui.

Apoio
A Dicas-L tem o apoio da Locaweb

Nenhum comentário: