Como implementar backups com o dump online do InterBase XE7
Dmitry Kuzmenko, 08-SET-2016
O InterBase, desde a versão 2007, suporta dump online - cópia online do arquivo de banco de dados. Em vez de gbak -b/-c, isso permite que você obtenha um banco de dados pronto para uso após a cópia, e você não precisa “restaurá-lo” a partir do backup (algo que não é um banco de dados). O dump online é muito rápido, quase como uma cópia de arquivo feita pelo sistema operacional.
Use o seguinte comando para fazer um dump online do banco de dados
gbak -d [opções] banco_de_dados destino
(Você pode encontrar a descrição completa do dump na documentação, Doc\OpGuide.pdf, ou aqui)
Assim como para o arquivo de banco de dados, o destino pode ter qualquer nome e extensão que você desejar. O resultado do comando será um arquivo de dump equivalente ao banco de dados original, mas em modo somente leitura.
O tempo da primeira execução deste comando é o tempo para escanear (ler) o banco de dados de origem e o tempo para gravar o arquivo de destino.
Enquanto o destino estiver em modo somente leitura, ele está vinculado ao arquivo de banco de dados. No primeiro dump, o arquivo completo do banco de dados será lido e copiado para o destino. Na segunda execução e nas seguintes - apenas as páginas alteradas serão gravadas no destino. Isso é chamado de “dump incremental”.
Importante! O InterBase XE7, em cada comando de dump repetido (com os mesmos nomes de arquivo, é claro), lê apenas as páginas alteradas do banco de dados e as grava no destino. Outras versões anteriores ao XE7 leem o banco de dados de origem completo. Portanto, o desempenho é diferente, e o XE7 é muito mais rápido. Se nenhuma página foi alterada no banco de dados de origem, o dump incremental do XE7 levará cerca de 1 segundo, enquanto o InterBase 2007-XE3 gastará o tempo necessário para ler todo o arquivo do banco de dados. O tempo depende do tamanho do banco de dados de origem e da velocidade do armazenamento. Por exemplo, se a velocidade do armazenamento for de cerca de 400 MB/s, um banco de dados de 100 GB será escaneado em 250 segundos (4 minutos e 10 segundos).
Nota. O InterBase XE7 suporta formatos de arquivo de banco de dados do XE7 (ODS 16), XE/XE3 (ODS 15) e 2009 (ODS 13). O recurso de varredura inteligente, mencionado acima, funcionará apenas com o formato de banco de dados XE7 (ODS 16).
Se você precisar colocar o destino em modo leitura-gravação (modo normal), use o comando
gfix destino -mode read_write
Mas, após isso, o destino perde o vínculo com o banco de dados, e a execução subsequente de gbak -d banco_de_dados destino não será mais possível, pois o destino será considerado como “outro” banco de dados.
Se você quiser sobrescrever completamente o destino, em vez do dump incremental, use a opção -ov
gbak -d -ov banco_de_dados destino
Dump do dump
O primeiro dump do dump funcionará, mas os incrementos subsequentes não. Por exemplo, primeiro
gbak -d banco_de_dados destino1
aqui obtemos destino1 como um banco de dados totalmente despejado em modo somente leitura.
Em seguida,
gbak -d destino1 destino2
Como você pode ver, criamos o dump do dump. E sim, este comando copiará destino1 para destino2. Ambos os destinos estarão em modo somente leitura. Mas se repetirmos esses dois comandos novamente, as alterações que foram do banco de dados para destino1 não serão copiadas para destino2. Portanto, destino2 permanece no estado após a primeira cópia inicial. E não há nenhuma mensagem de erro ou aviso.
Portanto, se você quiser fazer um dump do dump, deve usar apenas o dump completo
gbak -d -ov destino1 destino2
A opção -ov é obrigatória para garantir que destino2 seja gravado (e sobrescrito) com a origem de destino1.
Esquema de backup 1
Exemplo de dumps em diferentes intervalos de tempo
gbak -d banco_de_dados destino
É executado, por exemplo, a cada 1 hora. Aqui temos o banco de dados de origem em produção e a cópia de “backup” destino, com uma hora de atraso.
Além disso, a cada 24 horas, podemos executar
gbak -d banco_de_dados destino2
Aqui temos o banco de dados de produção, a cópia destino com 1 hora de atraso e a cópia destino2 com 24 horas de atraso.
Você pode fazer qualquer número de dumps a partir de um único banco de dados.
Nem é preciso dizer que os dumps de destino podem ser usados como bancos de dados somente leitura para qualquer finalidade - relatórios, análises, etc., para tarefas que não precisam consultar o banco de dados atual.
Prós: Cada dump pode ser agendado de forma independente.
Contras: Defasagem entre o dump mais recente e o mais antigo.
Esquema de backup 2
Dump sequencial para diferentes destinos. Nesse caso, você precisa configurar algum agendador (do sistema operacional ou personalizado) para executar os seguintes comandos, um por intervalo de tempo especificado
gbak -d banco_de_dados destino1
gbak -d banco_de_dados destino2
gbak -d banco_de_dados destino3
Se você usar um intervalo de 1 hora entre esses comandos, terá dumps (backups) assim:
destino1 às 12:00, destino2 às 13:00, destino3 às 14:00. A próxima execução do dump destino1 será atualizada às 15:00, e assim por diante. Como resultado, teremos cópias dos bancos de dados das últimas 3 horas.
Prós: temos dumps de várias horas que permanecem próximos do banco de dados original.
Contras: é um pouco difícil agendar esses comandos. Ou seja, neste exemplo, os comandos de dump precisam ser agendados por horário exato:
Dump para destino1 às 00:00, 03:00, 06:00…
Dump para destino2 às 01:00, 04:00, 07:00…
Dump para destino3 às 02:00, 05:00, 08:00…
Resumo
O gbak -d pode ser usado para um dump no armazenamento local e para um dump pela rede - já que o dump incremental envia ao destino apenas as páginas alteradas. Portanto, o destino pode ser colocado em um armazenamento de rede remoto. Mas, é claro, a rede deve ter boa largura de banda para ser compatível com o armazenamento local. Caso contrário, as gravações no destino serão lentas.
O dump online pode ser usado não apenas como uma ferramenta para fazer uma cópia de backup online do banco de dados, mas também como uma ferramenta para fazer “escalonamento horizontal” do sistema, para equilibrar a carga dos aplicativos de produção, relatórios e análises.
Embora você veja que o dump online é a maneira mais rápida de obter uma cópia online do banco de dados (em vez de gbak -b/-c), como o dump opera com páginas, ele pode ignorar alguns danos nas páginas, se o banco de dados estiver corrompido. Assim, você ainda precisa verificar a consistência do banco de dados com o bom e velho gbak -b/-c, mas pode fazer isso com menos frequência do que antes.