28 maio 2007

Tutorial Bacula: Infra-estrutura e Instalação

Volto aqui com a segunda parte do tutorial sobre o Bacula. Vou abordar nessa parte a explicação de como é a infra-estrutura na qual eu baseei o tutorial e a instalação do Bacula.

Infra-estrutura.

O tutorial é baseado na experiência que tive ao instalar o Bacula na empresa onde trabalho, por isso irei utilizar uma estrutura parecida para esse tutorial.

Para este tutorial teremos 1 servidor de arquivos com Linux instalado (acredito que a distribuição não seja importante) que o chamaremos d ServArq. Nesse servidor esta instalado uma unidade de fita para backup, com a qual, obviamente, iremos realizar os backups. Os arquivos a serem feito backup estão em somente 1 diretório, o diretório /arquivos. Será nesse servidor que iremos instalar o banco de dados e o Bacula, logo, teremos todos os módulos do Bacula concentrados em somente 1 servidor: o Bacula Director Daemon, o Bacula Storage Daemon, o Bacula File Daemon, o Database Server e o Console de Comandos. Apesar de estar instalando tudo em somente um servidor, eu poderia instalar cada módulo em um servidor diferente. Não estou utilizando vários servidores pois o volume de dados não é tão grande para justificar isso, porém é altamente recomendado uma configuração com vários servidores para quem tem muitos dados que precisam serem feito backup.

Além desse servidor de arquivo, teremos mais 2 servidores com dados que farão parte do backup. É um servidor de aplicações, que iremos chamar de ServApl, e um servidor de banco de dados, que chamaremos de ServBD, os 2 rodando Windows (acredito que a versão não seja importante, pois o Bacula roda em todas as versões). Nesses 2 servidores será instalado apenas o Bacula File Daemon, pois somente serão usados para buscar os dados que estão neles.

Acredito que com isso já se possa ter uma idéia melhor de como é a estrutura que será usada no backup. Saber como é a estrutura usada, na minha opinião, é fundamental para o entendimento da configuração do Bacula. Só mais um detalhe, todos os 3 estão na mesma rede física e lógica.

Como será realizado o backup

  • A partir da estrutura acima descrita, o backup será realizado da seguinte forma:

  • - Os dados de todos os 3 servidores estarão no backup;

  • - O servidor ServArq é o responsável pelo backup dos 3 servidores;

  • - Os backups serão realizados sempre durante a noite, iniciarão as 22 horas;

  • - Toda primeira segunda-feira de cada mês será realizado um backup completo, que será armazenado e não deverá ser apagado. Esse será nosso backup mensal;

  • - Será feito um backup completo toda segunda-feira (backup semanal, exceto na primeira segunda de cada mês), e backups incrementais de terça-feira à domingo (backup diário);

  • - O backup semanal será armazenado por 2 semanas, utilizando 2 fitas, alternando o uso (uma fita em uma semana, outra fita na semana seguinte), assim garantimos que sempre haverá um backup completo disponível;

  • - O backup diário utilizará apena 1 fita, que será utilizada todos os dias. Cada backup diário realizado será adicionado à fita sem sobrescrever o anterior, mantendo assim 6 backups incrementais na mesma fita;
Esse é o esquema de backup ideal, pelo menos para meu caso. Com esse esquema temos economia (pois usaremos somente 3 fitas durante o mês, sem contar com a fita mensal), praticidade (já que iremos trocar de fita apenas 2 vezes por semana) e segurança, já que teremos sempre um backup completo guardado e backups todos os dias.

Obs.: Para quem não sabe como funciona exatamente o backup incremental, vou colocar uma explicação rápida, mas aconselho que leia os links deste post, que contêm explicações mais detalhadas. Vamos à uma explicação rápida sobre os tipos de backup:

  • - Backup Completo ou Full – como o próprio nome diz, backup completo com todos arquivos existentes;

  • - Backup Diferencial – backup com as alterações realizadas desde o ultimo backup completo;

  • - Backup Incremental – backup com as alterações realizadas desde o ultimo backup, não importando que esse ultimo backup foi completo, diferencial ou incremental.
A instalação

Conforme as informações abordadas na parte de infra-estrutura, toda a instalação feita aqui será no mesmo servidor, no caso o ServArq. Então vamos começar.

Para a instalação, inicialmente você precisa ter instalado o MySQL ou algum outro servidor de banco de dados. Os bancos suportados na versão 2.0.3 são: MySQL, PostgreSQL, SQLite3, SQLite. No meu caso utilizei o MySQL. Como a maioria das distribuições atualmente já trazem o MySQL como padrão em sua coleção de pacotes, não irei abordar a instalação do mesmo, e vou considerar que todos saibam instalá-lo ou já o tenham instalado.

Para a instalação do Bacula, primeiro precisamos baixar a versão mais recente (recomendo isso pois aqui utilizo a versão mais recente, e mesmo que sua distribuição já traga o Bacula em sua coleção de pacotes, pode ser que a versão que a distribuição traga seja mais antiga) do site oficial (www.bacula.org). Depois de baixado e descompactado os fontes, vamos compilá-lo:

# ./configure --with-mysql

# make

# make install

Obs.: Existe um programa chamado checkinstall que server para criar o pacote rpm, deb ou tgz para a instalação com o gerenciador de pacotes. Para utilizá-lo, basta, depois do comando make, utilizar o comando:

# checkinstall make install

Esse comando irá pedir algumas informações sobre o programa e após isso irá gerar o pacote. Depois é só instalá-lo como o gerenciador de pacotes de sua distribuição. Isso garante uma remoção mais fácil do pacote, caso seja necessário. Eu tenho o pacote rpm gerado para o openSuse 10.2, se encontrar algum lugar para disponibilizar o pacote eu coloco o link no blog.

Após a instalação do Bacula, temos que criar o banco de dados no MySQL, criar as tabelas no banco de dados e preencher as tabelas com os dados iniciais necessários para o correto funcionamento do Bacula. Mas calma, não precisamos fazer isso manualmente, o Bacula traz scripts para automatizar essa tarefa. Entre no diretório /etc/bacula, que é o diretório padrão onde ficam os arquivos de configuração do Bacula. Nesse diretório estão os scripts que irão preparar o banco de dados. Digite os seguintes comandos:

# ./create_mysql_database

# ./grant_mysql_privileges

# ./make_mysql_tables

# ./update_mysql_tables

Ates de executar essas scripts, porém, é necessário saber a senha do adminitrador do MySQL (que normanlmente é o usuário root). Por padrão, ao instalar o MySQL, a senha é em branco. Se a senha do MySQL da sua instalação for em branco, é só executar os scripts e tudo funciona. Caso a senha seja outra, e você saiba a senha, entre em casa um dos scripts e altere a linha

if $bindir/mysql $* -f < $* -f

para

if $bindir/mysql -p= $* -f < $* -f

Agora, caso a senha não esteja em branco e você não saiba a senha, então temos um problema. Será necessário forçar a troca de senha. Eu sei que isso é possível fazer, mas não tenho os comandos necessários para fazer, logo, recomendo uma busca no google, caso esse seja o seu problema.

Para quem executou todos os passos até aqui sem nenhum problema, temos agora o ambiente pronto para começar a configirar o Bacula, mas isso irei abordar na próxima parte do artigo. Paro os que não obtiveram sucesso em alguma parte, estejam livre para postar as dúvidas nos comentários. Também estejam livres a apontar os problemas e fazer críticas ao tutrial.

Até a próxima.

7 comentários:

warlinux disse...

Parabéns pelo artigo, está ficando muito bom, estou aguardando todas a partes do artigo para poder colocar em produção, a um tempo atrás estava fazendo uns testes de instalação seguindo o tutorial para o FreeBSD porém fiquei um pouco confuso, e acabei deixando pra lá.

Agora me parece que com o seu tutorial, que está muito bem explicado, irei conseguir colocar pra funcionar o Bacula aqui.

Abraços e até a próxima.

Anônimo disse...

E no caso de eu ter perdido o banco de dados por meio de meu hd Crashar, eu vou ter ele em fita, e como faço para restaurar o conteudo da fita forçando ela sem a utilização do bacula.

tiago_stos disse...

Warlinux, que bom que comentou isso aqui. É esse tipo de comentário que gostaria mesmo, para saber se estou indo na direção certa ou preciso mudar alguma coisa. obrigado pela participação.

Sobre a perda das informações do HD, inclusive o banco de dados, eu ainda não havia pensado nisso até segunda-feira, quando tive um problema com o servidor (mas por sorte não precisei do backup). Estou procurando uma resposta para isso, e acredito que tenha possibilidade de recuperar informações da fita por meio de comandos do próprio linux. Irei verificar isso e postarei sobre isso na última parte do artigo. Mas duas formas de evitar esse problema é: 1 - manter um banco de dados em um servidor separado, como foi dito que é possível na primeira parte do artigo; 2 - fazer backup do banco de dados em CD, DVD ou em outro servidor.

Grato pelos comentários.

Anônimo disse...

Na verdade, eu gostaria de saber, por quê o backup do catálogo é feito no /tmp?

tiago_stos disse...

Anônimo(?), não encontrei onde você quiz dizer que o backup do catálogo é feito no /tmp.

O /tmp é utilizado pelo bacuula apenas para amarzenar os arquivos temporários enquanto o job esta sendo executado, seria isso que você quiz dizer?

Anônimo disse...

Senhores,
Estou com um problema que é o seguinte, estou fazendo um teste com o bacula e coloquei o schedule full para rodar 1:00pm e um Incremental 1:30pm, tudo na quarta.
Ele rodou o full certinho depois ele rodou o incremental também certinho, ae para testar eu mudei a hora do full e do incremental, ae ele rodou somente o Incremental, Porque?, porque ele não rodou o full também??

Grato

Victor disse...

Olá, estou tendo alguns conflitos com o bacula, não sei se poderia me auxiliar, olhe a mensagem que aparece.
./make_mysql_tables: line 8: $*: ambiguous redirect
Creation of Bacula MySQL tables failed.

isso é na linha que solicita para colocar para ignorar o usuario.