Usar os scripts para fazer backup e restaurar o banco de dados PostgreSQL
Os seguintes scripts estão disponíveis para fazer backup do banco de dados PostgreSQL. Ao executar os scripts, não é necessário interromper o banco de dados para executar um backup.
- postgresql_backup_pre.sh: esse script coloca o banco de dados em modo de backup.
- postgresql_snapshot_post.sh: esse script remove o banco de dados do modo de backup.
- postgresql_settings: trata-se de um arquivo de configuração em que as variáveis do PostgreSQL talvez precisem ser atualizadas.
- postgresql_backup_post.sh: esse script atualiza o log sobre o status do backup.
Pré-requisitos
Antes de iniciar o backup, certifique-se de fazer o seguinte:
- O nível de WAL é definido como arquivo morto (ou hot_standby)
- archive_mode está definido como ativado
- archive_command deve ser definido para especificar o local do arquivo morto
Observação: para aplicar as configurações, reinicialize o servidor depois de ajustá-las no arquivo postgresql.conf.
Os comandos a seguir ajudam a verificar o status do modo de arquivamento após a reinicialização:
- show archive_mode
- show archive_command
- show WAL level
Aplicar scripts
Siga estas etapas:
- Extraia o LinuxPostgres.zip, que contém os seguintes quatro arquivos: postgresql_backup_pre.sh, postgresql_snapshot_post.sh, postgresql_settings, postgresql_backup_post.sh
- Copie os arquivos do backup anterior/posterior/instantâneo para o seguinte caminho no servidor de backup do Linux: /opt/Arcserve/d2dserver/usr/prepost.
- Copie postgresql_settings no caminho de origem /root/backup.
- Certifique-se de verificar todos os valores definidos em postgresql_settings em relação às variáveis e fazer as modificações para todas as alterações necessárias de acordo com seu ambiente.
- Configure o plano a partir do console do UDP e selecione o nó PostgreSQL como origem.
-
- Confirme o status do backup. Para saber o status do backup do PostgreSQL, verifique o arquivo arcserve_postgresql_backup_${DATE}.log. Esse arquivo de log é criado no diretório definido pelo usuário. Para obter mais informações sobre como configurar o diretório, consulte o arquivo postgresql_settings.
Restaurar o banco de dados PostgreSQL
Siga estas etapas:
- Interrompa o servidor de banco de dados.
- Para restaurar para o local original, faça o seguinte:
- Exclua os arquivos e diretórios da pasta /data atual.
- Execute uma restauração de toda a pasta /data.
- Depois de terminar de restaurar a pasta /data, exclua os arquivos das seguintes pastas:
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Acesse a pasta que está configurada para o arquivamento do WAL e faça o seguinte:
- Exclua os arquivos presentes no diretório pg_wal restaurado que contém as informações relacionadas às transações executadas durante o backup.
- Agora, copie os arquivos do local definido pelo usuário para a pasta pg_wal, para consistência de dados e recuperação pontual.
- Inicie o servidor do banco de dados.
Restaure em um local diferente no mesmo servidor.
- Interrompa o servidor de banco de dados.
- Configure PGDATA em “new_data_directory_path” para executá-lo.
- Inicialize o banco de dados recém-criado usando o comando “Initdb”.
- Exclua os arquivos e diretórios da pasta /data atual.
- Execute uma restauração de toda a pasta /data.
- Depois de terminar de restaurar a pasta /data, exclua os arquivos das seguintes pastas:
- pg_dynshmem/
- pg_notify/
- pg_serial/
- pg_snapshots/
- pg_stat_tmp/
- pg_subtrans/
- pg_internal.init
- Acesse a pasta que está configurada para o arquivamento do WAL e faça o seguinte:
- Exclua os arquivos presentes no diretório pg_wal restaurado que contém as informações relacionadas às transações executadas durante o backup.
- Agora, copie os arquivos do local definido pelo usuário para a pasta pg_wal, para consistência de dados e recuperação pontual.
- Inicie o servidor do banco de dados.
- Observação: certifique-se de que a inicialização do banco de dados seja executada na sessão em que o PGDATA foi atualizado.
Limitações
Os scripts acima não ajudarão a executar backup se o banco de dados PostgreSQL estiver configurado com a porta não padrão. Os scripts trabalham somente com o número de porta padrão 5432.
Como alternativa, use as seguintes recomendações para modificar manualmente os scripts postgresql_backup_pre.sh e postgresql_snapshot_post.sh:
- postgresql_backup_pre.sh:
- Original: sudo -u ${USERNAME} -H -- psql -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- Modificado: sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_start_backup('Arcserve UDP backup - ${DATE} $(timestamp)', true)" >> ${LOG} 2>&1
- postgresql_snapshot_post.sh:
- Original: sudo -u ${USERNAME} -H -- psql -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1
- Modificado: sudo -u ${USERNAME} -H -- psql -p 5432 -c "SELECT pg_stop_backup()" >> ${LOG} 2>&1