Beruflich Dokumente
Kultur Dokumente
Não é novidade que nada no mundo é perfeito e, obviamente, os bancos de dados não
são exceção. Seja por falhas no próprio SGBD (bugs), ou por fatores externos (sistema
operacional, hardware, faxineira, etc.), é imprescindível adotar uma política de backups
para se precaver de acontecimentos e surpresas indesejáveis.
O Firebird oferece dois métodos nativos de backup: o bom e velho gbak, e o mais
recente, nbackup. A diferença básica entre eles é que o gbak realiza sempre um backup
completo da base de dados, armazenando a estrutura do banco e os dados das tabelas. Já
o nbackup permite a realização de backups incrementais, sendo que os arquivos gerados
contêm cópias exatas das páginas do banco de dados. No backup é incremental, apenas
as páginas que foram alteradas desde o último backup de nível anterior são gravadas.
Uma diferença importante é que o gbak não armazena no arquivo de backup o “lixo”
que pode existir no banco, como versões temporárias e registros apagados, árvores de
índices, páginas de inventário de transações, etc. Já o nbackup, por fazer uma cópia das
páginas do banco, leva também todo o lixo junto, e qualquer outra coisa que esteja
gravada nelas. Tanto é verdade, que um backup de nível zero no nbackup terá
exatamente o mesmo tamanho do arquivo do banco de dados. É praticamente uma cópia
do arquivo, com apenas alguns bytes de diferença no header, indicando que é um
arquivo de backup. Já um backup gerado pelo gbak produz um arquivo geralmente
muito menor do que o banco de dados, pois todo o lixo e as árvores de índices são
descartados.
Mas se você pensa que backups servem somente para te salvar em alguma situação de
emergência, está enganado! Os backups podem ajudar também para manter a boa
“saúde” do banco de dados. Como? Vejamos:
Fique atento, no entanto, que a única forma de se certificar que um arquivo de backup
gerado pelo gbak está OK e poderá ser restaurado quando necessário, é fazendo um
restore nele. Um exemplo muito comum de arquivo de backup que não poderá ser
restaurado, é quando alguém alterou diretamente as tabelas de sistema do Firebird,
fazendo com que campos que aceitavam null passassem a ser not null, e esquecendo de
colocar valores nos campos dos registros que já existiam. Ao se tentar restaurar o
backup, o processo vai falhar.
A linha de comando acima faz com que o gbak desvie a saída para a stdout (ao invés de
um arquivo), redirecionando para a stdin. Ou seja, o comando acima não produz um
arquivo de backup, mas sim um banco de dados operacional (BD_backup.fdb).
Qualquer problema durante o processo retornará um erro imediatamente, ou seja, se
nenhum erro ocorreu, você pode ter certeza que o banco restaurado está ok.
Para ter uma visão geral e saber como utilizar o gbak e o nbackup, recomendo a leitura
do recém produzido manual do gbak, em http://www.firebirdsql.org/manual/gbak.html
e o do nBackp em http://www.firebirdsql.org/manual/nbackup.html, além de outros
artigos e livros disponíveis.
Este artigo mostrou que o processo de backup tem papel importante, não só como
garantia contra catástrofes, mas como parte do processo de manutenção do banco de
dados. Tão importante quanto fazer o backup, é se certificar que o backup gerado pode
ser restaurado.
Up the Irons!
Carlos H. Cantu
blog.firebase.com.br
www.firebase.com.br
http://www.firebase.com.br/fb/artigo.php?id=2204