Implementando uma rotina de backups no PostgreSQL

Para implementar uma rotina de backup incremental no PostgreSQL, você tem algumas opções principais. Vou explicar como configurar uma usando pg_basebackup com WAL (Write-Ahead Logging) e outra com ferramentas de terceiros, como o pgBackRest, que oferece uma abordagem mais completa e automatizada.

1. Usando o WAL Archiving com pg_basebackup

O PostgreSQL não possui suporte nativo para backup incremental direto, mas podemos conseguir algo similar utilizando o arquivamento de logs de transações (WAL).

Passos para configurar:

  1. Ativar o arquivamento de WAL no arquivo postgresql.conf:

    archive_mode = on archive_command = 'cp %p /caminho/para/o/diretorio/de/backup/%f'
    • O comando acima copia cada arquivo de log gerado para o diretório especificado.
    • Certifique-se de que o diretório onde os arquivos WAL serão armazenados exista e tenha permissões adequadas.
  2. Realizar um backup completo inicial com pg_basebackup:

    pg_basebackup -D /caminho/para/o/diretorio/backup_completo -Ft -z -P -U seu_usuario_postgres
    • Esse comando cria um backup base que poderá ser restaurado junto com os arquivos WAL.
  3. Configurar uma rotina para mover os arquivos WAL para o backup:

    • Use um cron job para automatizar o processo e mover periodicamente os arquivos WAL para o local de backup.
  4. Restaurar o backup incremental:

    • Para a restauração, você precisará do backup completo inicial e dos arquivos WAL subsequentes.
     
    pg_restore -d sua_base_de_dados /caminho/para/o/diretorio/backup_completo
    • Após restaurar o backup inicial, aplique os logs WAL para recriar o estado incremental do banco até o ponto desejado.

2. Usando pgBackRest para backup incremental

O pgBackRest é uma ferramenta de backup e restauração que facilita o gerenciamento de backups incrementais no PostgreSQL. Ele é robusto e possui suporte a compressão, criptografia e retenção automatizada.

Passos para configurar com pgBackRest:

  1. Instalar o pgBackRest:

    • Dependendo do seu sistema operacional, você pode instalar com apt, yum, ou compilando a partir do código-fonte.
  2. Configurar o arquivo de configuração /etc/pgbackrest.conf:

    [global] repo1-path=/caminho/para/o/diretorio/de/backup repo1-retention-full=2 repo1-retention-diff=7

    [sua_base_de_dados] pg1-path=/caminho/para/os/dados/do/postgresql

    • Essa configuração define o diretório de backup, a retenção de backups completos e incrementais, e o caminho para os dados do PostgreSQL.
  3. Realizar o backup completo inicial:

    pgbackrest --stanza=sua_base_de_dados --type=full backup
  4. Realizar backups incrementais programados:

    • Para criar um backup incremental, basta usar o comando:
     
    pgbackrest --stanza=sua_base_de_dados --type=diff backup
    • Você pode automatizar isso com cron jobs para executar periodicamente.
  5. Restaurar o backup:

    pgbackrest --stanza=sua_base_de_dados restore

Conclusão

Se você precisa de uma solução integrada e otimizada para backups incrementais no PostgreSQL, o pgBackRest é a melhor opção, já que ele lida automaticamente com a retenção de backups e arquivos WAL.