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”.