Utilizando o gBak do Firebird para efetuar backup/restore

Todos os bancos de dados existentes estão sujeitos a erros e perca de dados, portanto, se torna essencial a geração do backup da base de dados. Neste artigo nós veremos como criar backup através do utilitário gBak do Firebird.

Existem duas maneiras de se criar um backup: Através do utilitário gBak (por linha de comando) e através da API de serviços. As duas formas, de modo geral, fazem exatamente a mesma coisa, porém, com o gBak você pode salvar o arquivo de backup na máquina onde o gBak foi executado, indiferentemente se essa máquina é o servidor ou terminal. Através da API de serviços isto não é possível: Você poderá executar o backup em qualquer computador, mas o arquivo de backup só poderá ser salvo no servidor. Isso acontece porque quando você executa o backup pela API de serviços quem executa o backup é o próprio servidor.

Por outro lado, através da API de serviços você pode colocar a rotina de backup integrado ao seu sistema. Caso você queira aprender como fazer um backup no firebird utilizando a API de serviços utilizando o Delphi veja este outro artigo: Sistema completo para Backup/Restore com Firebird - Parte I.

O utilitário gBak fica dentro da basta Bin, no diretório onde você instalou o firebird. Como a maioria dos programas utilizados por linha de comando, o gBak também utiliza de parâmetros para a configuração do backup a ser gerado. Veja na tabela abaixo os parâmetros existentes e o que significa cada um.

Parâmetro Abreviação Descrição
-USER Nome do usuário que fará o backup/restore.
-PASSWORD -PAS Senha do usuário que vai executar o backup/restore.
-ROLE -RO Role que será usado para conectar a base de dados.
-BACKUP_DATABASE -B Gera um backup.
-CREATE_DATABASE -C Cria um banco de dados a partir de um arquivo de backup já pronto.
-GARBAGE_COLLECT -G Não realiza o processo de garbage collection durante o processo de backup, porém, é recomendado que você sempre realize o garbage collect, pois o mesmo é responsável por excluir as versões de registro que não são mais necessárias.
-INACTIVE -I Desativa os índices durante o processo de restauração do banco de dados.
-IGNORE -IG Ignora os possíveis erros de checksum.
-NO_VALIDITY -N Restaura o banco de dados sem fazer as validações de integridade.
-KILL -K Restaura um banco de dados, porém, não restaura os arquivos de espelho (shadow), do banco de dados.
-LIMBO -L Ignora todas as transações que por algum motivo não foram confirmadas e nem descartadas.
-MODE <MODO> -MO Determina se o banco restaurado será atualizável (read_write), ou apenas leitura (read_only).
-META_DATA -M Faz backup apenas da estrutura do banco de dados, sem os dados contidos nele.
-NT Cria um arquivo de backup que só poderá ser restaurado num computador que possua um processador compatível com o processador da máquina onde o backup foi gerado (backup não transportável).
-TRANSPORTABLE -T Cria um backup com os dados no formato XDR, ou seja, o backup poderá ser restaurado em máquinas que utilizem processadores diferentes do processador utilizado na máquina onde foi feito o backup (formato transportável).
-ONE_ATE_A_TIME -O Durante a restauração da base de dados será restaurada apenas uma tabela de cada vez.
-PAGE_SIZE -P Determina o tamanho das paginas que o banco restaurado usará
-REPLACE_DATABASE -R Especifica que caso o banco informado para o restore já exista, ele deverá ser sobreposto.
-SERVICE -SE Usa a API de serviço para executar o backup o que fará com que o servidor faça o backup e não o gBak. Como já foi dito anteriormente, esse processo não permitira que o arquivo de backup seja salvo em uma máquina que não seja o servidor.
-USE_ALL_SPACE -USE_ Recomendado para bases de dados que serão read only, visto que o tamanho do banco de dados pode diminuir consideravelmente, pois os 20% reservado em cada página do banco para uso posterior não serão usados.
-VERIFY -V Mostra na tela todo o processo que esta sendo executado no backup/restore.
-Y <CAMINHO> Não mostra as mensagens de status ou se você informar o caminho de um arquivo, as mensagem serão armazenadas nele.
-BUFFERS -BU Tamanho (em bytes), do cache para o banco que esta sendo restaurado.
-CONVERT -CO Grava as tabelas externas do banco de dados dentro do backup como se fossem tabelas internas.
-Z Mostra a versão do gBak.
-? Mostra esta lista de comando.

Vamos aos exemplos de como executar um backup. Como o utilitário gBak é um utilitário de linha de comando, todos os exemplos abaixo devem ser digitados através do prompt de comando.

Primeiro exemplo – Gerando um backup

    gbak –user SYSDBA –pas masterkey 172.16.20.14:c:\dados.fdb c:\backup.fbk
    

Neste primeiro exemplo é criado um backup da base de dados dentro do drive C: do computador onde o gBak foi executado. A base de dados que esta sendo feito o backup se encontra no servidor 172.16.20.14, no caminho C:\Dados.fdb. Os parâmetros –user e –pas informam respectivamente o nome e a senha do usuário que esta se conectando a base de dados para executar o backup.

Segundo exemplo – Restaurando um backup

    gbak –user SYSDBA –pas masterkey –r –p 4096 -o c:\backup.fbk 172.16.20.14:c:\dados.fdb
    

Neste exemplo, será gerado um banco no caminho em C:\Dados.fdb dentro do servidor 172.16.20.14. Esse novo banco de dados, caso o banco C:\Dados.fdb já exista, ele será sobrescrito. Alem disso o comando -o informa que durante o processo de restauração, apenas uma tabela por vez será restaurada, o que é útil em caso onde o backup possa estar corrompido.

Agora você já sabe como usar o utilitário para executar backup/restore no Firebird. Lembre-se de que você nunca deve deixar de fazer backup para evitar futuras “dores de cabeça”.