Essa ação efetua o backup de todos os dados do PostgreSQL, incluindo bases que não pertencem ao Maxicon Balança. Para esse formato de backup ser efetivo também é necessário:
- ativar os recursos de replicação do PostgreSQL
- ativar o modo "archive" do PostgreSQL
Por favor, não configure essa opção sem a recomendação explícita da Maxicon Sistemas. Processo desenvolvido na Solicitação 107632.
Esta forma de backup baseia-se na função do PostgreSQL que cria temporariamente arquivos representando as modificações que o banco de dados sofre. Toda vez que a tarefa for executada, será criada uma cópia do diretório "data" do PostgreSQL comprimida nos formatos TAR e GZ e arquivos antigos (já presentes nesta cópia) serão deletados. A partir do GZ e dos arquivos seguintes que o serviço gerou, é possível restaurar o banco de dados para um estado anterior (em caso de perda de informações ou ação indevida).
Devem ser criadas duas pastas reservadas para a geração dos backups: uma irá conter os arquivos incrementais gerados pelo PostgreSQL e outra com o diretório "data" comprimido em arquivo "base.tar.gz".
Configuração
Parar o serviço do PostgreSQL no Windows e reiniciar apenas após realizar as configurações a seguir. Na pasta de instalação do PostgreSQL, por exemplo “C:\Program Files\PostgreSQL\9.4”, abrir a pasta “data” e incluir no arquivo postgresql.conf:
wal_level = hot_standby
archive_mode = on
archive_command = 'copy "%p" "C:\\backup_mb\\archives\\%f"'
archive_timeout = 10
max_wal_senders = 3
wal_keep_segments = 10
Substituir o trecho "C:\\backup_mb\\archives\\" pelo diretório criado para armazenar os arquivos incrementais do PostgreSQL. Esse caminho deve ser inserido também durante o cadastro da tarefa no Maxicon Balança.
Execução
Com essa configuração da tarefa, o MB deverá fazer o seguinte:
- Criar uma pasta no C:\backup_mb com a data/hora da execução, e dentro dessa pasta deve existir o backup (base.tar.gz). Evidências:
- Na pasta C:\backup_mb\archives será criado um arquivo .backup e os arquivo desnecessários serão removidos. Evidência após 3 backups (basta comparar com a quantidade de arquivos da imagem anterior):
Restauração
Para restaurar o banco de dados a partir de um backup completo ("base.tar.gz") e de arquivos incrementais do PostgreSQL, o processo é o seguinte:
- Instalar o PostgreSQL na máquina (caso não possua) e parar o serviço correspondente.
- Limpar o conteúdo da sua pasta "data".
- Extrair o arquivo "base.tar.gz" em um local qualquer, isso irá gerar um "base.tar". Em seguida, extrair este dentro da pasta "data" que foi limpa na etapa anterior. As descompressões podem ser feitas por meio do programa 7-Zip. Caso exista um backup da pasta "data" de um momento posterior à última geração do "base.tar.gz", pode-se pular estas primeiras etapas. Apenas é necessário que o serviço do PostgreSQL não seja iniciado antes da cópia dos archives, caso contrário a restauração parcial não será mais possível sem antes transferir o conteúdo do "base.tar.gz".
- Limpar o conteúdo da pasta "\data\pg_xlog\".
- Criar um arquivo de texto chamado "recovery.conf", com o seguinte conteúdo:
restore_command = 'copy "C:\\backup_mb\\archives\\%f" "%p"'
Sendo "C:\backup_mb\archives\" o diretório contendo os arquivos incrementais do PostgreSQL. Copiar esse arquivo para a pasta "data". - Iniciar o serviço do PostgreSQL. O programa vai começar a copiar os dados dos arquivos incrementais, caso trate-se de muitas informações, é possível que apareça um erro de timeout no início do serviço (ele pode ser ignorado). A transferência dos arquivos pode ser acompanhada através do log do banco, localizado na pasta "\data\pg_log\". Caso o processo seja bem sucedido, o arquivo "recovery.conf" será automaticamente renomeado para "recovery.done".
- Reiniciar o servidor para que o vínculo do serviço do PostgreSQL com o processo correspondente seja ajustado.
- Testar o uso do sistema.