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 daemonDirector {
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 daemonDirector {
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
fititbkp=`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
esacif [ -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
ficd ${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
fiecho “`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
fiecho “`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 diferencias 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
* Bacula Main Reference Guide PDF e HTML
* Console and Operators Guide PDF e HTML
* Problem Resolution Guide PDF e HTML
* Utility Programs PDF e HTML