Pular para o conteúdo principal

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.

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 dos Santos 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 dos Santos 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

Postagens mais visitadas deste blog

Linux de bolso

Comecei a faculdade (ciência da computação, escolha meio obvia) esse ano e logo de cara fiquei sabendo que iriamos utilizar linux nos computadores da faculdade, o que achei muito bom. Mas chegando no laboratório de informática vi que estava instalado o CentOS , se não me engano é baseado no Red Hat Enterprise (e não Fedora, como tinha postado antes). Até ai tudo bem, nada contra em usar uma distribuição que não conheço, o problema foi quando percebi que o sistema estava da forma como foi instalado, sem nenhuma configuração extra. Primeiro percebi que a resolução estava em 800x600, e não havia como mudar a resolução para 1024x768, que julgo ser ideal de ser usada. Isso até que podia ser suportado, mas ao tentar usar meu pendrive ele não foi reconhecido automaticamente, ou pelo menos não foi montado automaticamente, e depois tentando monsta-lo manualmente, o sistema só dá permição para o root montar dispositivos, e a senha do root, como não podia ser diferente, não temos acesso. Com es...

Jquery-rails - Problema ao cancelar uma confirmação

No projeto que estou desenvolvendo agora me deparei com o seguinte problema: ao clicar em um link para excluir um registro, clicando em cancelar no diálogo de confirmação a exclusão era executada. Solução: Substituir o arquivo rails.js pelo arquivo mais recente https://github.com/rails/jquery-ujs/blob/master/src/rails.js .