Fazendo “backup” de bancos Postgresql corretamente

Fazendo "backup" de bancos Postgresql corretamente 1

Ao invés do mais popular “dump”, o método abaixo consiste numa melhor maneira de fazer o backup do Postgresql, principalmente por se tratar de um backup on-line (ou seja, o banco não para). Muito útil para grandes bases.

Para isso, ative o WAL (write ahead log) do Postgresql. Dentro do postgresql.conf, deve haver a seguinte linha:

archive_command = 'cp -i %p /mnt/server/archivedir/%f </dev/null'

Logicamente, /mnt/server/archivedir é apena o diretório destino do arquivamento, devendo ser alterado para um ponto de montagem no qual tenha espaço suficiente para armazenar os logs.

Atenção! Teste o comando. Caso o cp -i não funcione, deve realizar uma verificação de execução correta no script. Verifique a documentação do Postgresql no link mais abaixo.

Então:

Crie no Bacula um RunBeforeJob script que execute na console do Postgres, com superusuário do banco:

SELECT pg_start_backup('label');

Onde label será um nome que você atribuirá para esta transação de backup.

O backup do Bacula deverá então rodar, copiando os arquivos do banco, apenas. Nunca deve ser backupeado o arquivo do banco em conjunto com o backup dos logs arquivados (pasta de “archieve”, definida acima).

Já no RunAfterJob – e isso é muito importante, deve criar um script que execute a seguinte rotina no banco do Postgresql:

SELECT pg_stop_backup();

A boa alma que fizer os scripts pode postar aqui… =]

Fonte: http://www.postgresql.org/docs/8.1/static/backup-online.html

Dica: Flávio Gurgel, professor de Postgresql.

Abraços,

Heitor Faria

Disponível em: pt-brPortuguês

Deixe uma resposta