>_Backup com Bacula – DR – Banco de dados, Bscan e Bextract – 1.16

Entendendo um pouco da estrutura de backup do Bacula.

logo

Neste tutorial será abordado pontos relacionados a restauração do catálogo do banco de dados do Bacula e de mais duas ferramentas importantes para o Disaster Recovery.

O primeiro passo é configurar o arquivo bacula-dir.conf, ajustando o Job BackupCatalog para garantir que o backup do catálogo do banco de dados seja feito mais de uma vez ao dia.

Acessando o diretório do Bacula.

# cd /etc/bacula

Ajustando o arquivo bacula-dir.conf.

# vim bacula-dir.conf

Em Job BackupCatalog será preciso alterar alguns parâmetros.

Job {
  Name = "BackupCatalog"
  JobDefs = "DefaultJob"
  Level = Full
  FileSet="Catalog"
  Schedule = "WeeklyCycleAfterBackup"
  # This creates an ASCII copy of the catalog
  # Arguments to make_catalog_backup.pl are:
  #  make_catalog_backup.pl 
  RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
  # This deletes the copy of the catalog
  RunAfterJob  = "/usr/libexec/bacula/delete_catalog_backup"
  Write Bootstrap = "/var/spool/bacula/%n.bsr"
  Priority = 11                   # run after main backup
}

PARA
Observação: O parâmetro comentado abaixo, RunAfterJob tem como função apagar o dump da banco de dados após o backup. Por padrão ele vem descomentado, porém para garantir ainda mais a segurança este parâmetro será comentado para que o Bacula não apague mais o dump após o backup. Desta forma o dump será mantido também no diretório /var/spool/bacula.

 Backup the catalog database (after the nightly save)
Job {
	Name 		= "BackupCatalog"
  	JobDefs 	= "DefaultJob"
  	Level 		= Full
  	FileSet		= "Catalog"
  	Schedule 	= "WeeklyCycleAfterBackup"
  	RunBeforeJob 	= "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
        #RunAfterJob     = "/usr/libexec/bacula/delete_catalog_backup"
  	Write Bootstrap = "/var/spool/bacula/%n.bsr"
  	Priority 	= 100                   
  	Pool 		= Mysql-bacula
}

Em Schedule também será necessário realizar algumas alterações.

Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 23:10
        ame = "Agenda_gfs"
}

PARA
Observação: A backup será realizado todos os dias nos horários 6, 12 e 18 horas. E sempre será um backup Full.

Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full              Pool=Mysql-bacula     monday-sunday           at 06:00,12:00,18:00
}

E por fim, será necessário criar uma nova Pool chamada Mysql-bacula. Esta nova Pool será utilizada somente para o catálogo do Bacula.

Pool {
        Name                    = Mysql-bacula
        Pool Type               = Backup
        Recycle                 = yes
        AutoPrune               = yes
        Volume Use Duration     = 24 hours
        Volume Retention        = 1 days
        Maximum Volume Bytes    = 3G
        Maximum Volumes         = 4
        Label Format            ="mysql-${NumVols}"
}

Reiniciando o bacula-dir para que as alterações surtam efeito.

# /etc/init.d/bacula-dir restart
Stopping Bacula Director services:                         [  OK  ]
Starting Bacula Director services:                         [  OK  ]

bscan

O Bacula possui uma poderosa ferramenta chamada bscan. Esta ferramenta não necessita de nenhum processo rodando. Com ela é possível restaurar as informações (registro do banco de dados).

No servidor Bacula, será removido o volume chamado diario-0.

# bconsole 
Connecting to Director localhost:9101
1000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*delete
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
In general it is not a good idea to delete either a
Pool or a Volume since they may contain data.

You have the following choices:
     1: volume
     2: pool
     3: jobid
Choose catalog item to delete (1-3): 1
Defined Pools:
     1: Default
     2: File
     3: Scratch
     4: Diario
     5: Semanal
     6: Mensal
     7: Mysql-bacula
Select the Pool (1-7): 4
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes      | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
|       3 | diario-0   | Used      |       1 | 8,113,496,928 |        1 |      518,400 |       1 |    0 |         0 | File      | 2015-05-01 23:10:03 |
|       4 | diario-1   | Used      |       1 | 7,122,772,883 |        1 |      518,400 |       1 |    0 |         0 | File      | 2015-05-02 23:10:03 |
|       5 | diario-2   | Used      |       1 | 7,709,724,707 |        1 |      518,400 |       1 |    0 |         0 | File      | 2015-05-04 22:00:05 |
|       6 | diario-3   | Append    |       1 | 7,942,320,218 |        1 |       86,400 |       1 |    0 |         0 | File      | 2015-05-05 15:42:44 |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
Enter *MediaId or Volume name: diario-0

Em seguida dentro do diretório /backup, local onde estão sendo armazenados os volumes (dados backupeados) será listado o volume diario-0. Note que o volume fisicamente não foi apagado. Apenas foi deletado no catálogo do banco de dados do Bacula.

# cd /backup/
# ll
total 30165312
-rw-r-----  1 root root 8113496928 Mai  1 23:10 diario-0
-rw-r-----  1 root root 7122772883 Mai  2 23:10 diario-1
-rw-r-----  1 root root 7709724707 Mai  4 22:00 diario-2
-rw-r-----  1 root root 7942320218 Mai  5 15:42 diario-3

Como restaurar para o catálogo do Bacula?

Para restaurar as informações dos dados backupeados do volume diario-0 para o catálogo do Bacula, será necessário utilizar o comando bscan com os seus parâmetros.

Exemplo:

# bscan -s -m -c /etc/bacula/bacula-sd.conf -v -V "diario-0" /backup
Records added or updated in the catalog:
      1 Media
      1 Pool
      8 Job
   4819 File

-s = Sincronização dos dados.
-m = Atualização da media.
-c = Arquivo de configuração.
-v = Verbose.
-V = Nomes de volumes, sendo possível especificar os nomes dos volumes separados por pipe (|). “diario-0|diario-1”
/backup = local onde estão sendo armazenados os arquivos de backup do Bacula.

Após a execução do comando bscan, novamente no Bacula através do console será possível observar que o catálogo do volume diario-0 foi restaurado no banco de dados do Bacula.

# bconsole 
Connecting to Director localhost:9101
1000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*list media
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Pool: Default
No results to list.
Pool: File
No results to list.
Pool: Scratch
No results to list.
Pool: Diario
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
| MediaId | VolumeName | VolStatus | Enabled | VolBytes      | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+
|       4 | diario-1   | Used      |       1 | 7,122,772,883 |        1 |      518,400 |       1 |    0 |         0 | File      | 2015-05-02 23:10:03 |
|       5 | diario-2   | Used      |       1 | 7,709,724,707 |        1 |      518,400 |       1 |    0 |         0 | File      | 2015-05-04 22:00:05 |
|       6 | diario-3   | Append    |       1 | 7,942,320,218 |        1 |       86,400 |       1 |    0 |         0 | File      | 2015-05-05 15:42:44 |
|       8 | diario-0   | Archive   |       1 | 8,108,969,716 |        1 |   31,536,000 |       0 |    0 |         0 | File      | 2015-05-01 23:10:03 |
+---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+

bextract

Tem como função extrair o volume por inteiro ou não em um diretório do servidor.

# bextract -c /etc/bacula/bacula-sd.conf -v -V diario-0 /backup /tmp/

-c = Local do arquivo do Bacula storage.
-v = Verbose.
-V = Volume.
/backup = local onde estão sendo armazenados os volumes de backup.
/tmp = Local onde será armazenados os arquivos que serão restaurados.

No exemplo acima, será restaurado o volume diario-0 que se encontra  fisicamente em /backup, restaurando todo o conteúdo no diretório /tmp.

Restaurando somente arquivos específicos.

# cd /etc/bacula/

Para especificar somente os arquivos que deseja restaurar, será necessário criar um arquivo contendo os nomes dos arquivos, podendo ou não utilizar expressão regular.
Exemplo:

# vim lista
/etc/bacula/bacula*
*.sql

Em seguida, basta informar através do parâmetro -i o caminho do arquivo contendo a lista de arquivos que deseja restaurar.

# bextract -i /etc/bacula/lista -c /etc/bacula/bacula-sd.conf -v -V diario-0 /backup /tmp/
bextract: butil.c:289-0 Using device: "/backup" for reading.
05-Mai 16:19 bextract JobId 0: Ready to read from volume "diario-0" on file device "FileStorage" (/backup).
bextract JobId 0: -rw-r-----   1 root     bacula         11516 2015-05-01 13:35:51  /tmp//etc/bacula/bacula-dir.conf
bextract JobId 0: -rw-r-----   1 root     bacula         11516 2015-05-01 13:35:51  /tmp//etc/bacula/bacula-dir.conf
bextract JobId 0: -rw-r--r--   1 root     root              90 2015-04-08 14:38:05  /tmp//etc/bacula/query.sql
bextract JobId 0: -rw-r-----   1 root     root            5809 2015-04-09 14:31:12  /tmp//etc/bacula/bacula-sd.conf
bextract JobId 0: -rw-r-----   1 root     root             909 2015-04-09 14:20:57  /tmp//etc/bacula/bacula-fd.conf
bextract JobId 0: -rw-r-----   1 root     bacula         11525 2015-05-01 15:30:59  /tmp//etc/bacula/bacula-dir.conf
bextract JobId 0: -rw-r-----   1 root     root            1030 2015-04-28 15:41:44  /tmp//etc/bacula/bacula-fd.conf
bextract JobId 0: -rw-------   1 root     root          731639 2015-05-01 23:10:03  /tmp//var/spool/bacula/bacula.sql
05-Mai 16:21 bextract JobId 0: End of Volume at file 1 on device "FileStorage" (/backup), Volume "diario-0"
05-Mai 16:21 bextract JobId 0: End of all volumes.

Para visualizar os arquivos restaurados, basta acessar o diretório /tmp.

# cd /tmp/

Continua …
Fonte:
www.bacula.com.br

>_Backup com Bacula – DR – Banco de dados, Bscan e Bextract – 1.16
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: