Administração do PGBACKREST

Administração do PGBACKREST

Introdução

Este artigo apresenta uma visão prática sobre a administração do pgBackRest, uma das principais ferramentas de backup e recuperação para PostgreSQL.

Serão abordados os principais conceitos para implantação e operação da solução, incluindo:

  • Instalação e configuração;
  • Criação e gerenciamento de stanzas;
  • Estratégias de backup (Full, Differential e Incremental);
  • Compressão e paralelismo;
  • Políticas de retenção;
  • Recuperação de desastres;
  • Restauração Point-in-Time Recovery (PITR);
  • Criação e reconstrução de servidores Standby.

O objetivo é fornecer um guia para administradores de banco de dados que desejam implementar uma estratégia de backup segura, performática e alinhada às melhores práticas do PostgreSQL.

1. Instalação do pgBackRest

A instalação varia conforme a distribuição Linux utilizada.

Neste exemplo foi utilizado Debian.

apt install pgbackrest

1.1 Configuração da autenticação SSH

Para que o pgBackRest consiga executar operações remotas entre os servidores, é necessário configurar autenticação SSH sem senha entre os hosts envolvidos.

Primeiramente, gere o par de chaves em todos os servidores:

ssh-keygen -t rsa

Em seguida, copie a chave pública para os demais servidores.

Servidor PostgreSQL Primário

ssh-copy-id -i /var/lib/postgresql/.ssh/id_rsa.pub postgres@192.168.7.100

Servidor PostgreSQL Standby

ssh-copy-id -i /var/lib/postgresql/.ssh/id_rsa.pub postgres@192.168.7.101

Servidor de Backup

ssh-copy-id -i /var/lib/postgresql/.ssh/id_rsa.pub postgres@192.168.7.102

1.2 Backup da configuração

Antes de qualquer alteração, recomenda-se manter uma cópia da configuração original.

cp /etc/pgbackrest.conf /etc/pgbackrest.conf.sample

2. Configuração do pgBackRest

O arquivo principal de configuração é:

/etc/pgbackrest.conf

2.1 Configuração do servidor PostgreSQL Primário

[global]
repo1-host=192.168.7.102
repo1-host-user=postgres
process-max=2
log-level-console=info
log-level-file=debug

[prod_dbacorp]
pg1-path=/var/lib/postgresql/18/main

Descrição dos parâmetros

ParâmetroDescriçãorepo1-hostServidor responsável pelo repositório de backuprepo1-host-userUsuário utilizado na conexão SSHprocess-maxNúmero máximo de processos paraleloslog-level-consoleNível de log exibido no consolelog-level-fileNível de log gravado em arquivopg1-pathDiretório de dados do PostgreSQL

2.2 Configuração do servidor Standby

No servidor Standby, além da configuração padrão, deve ser informado como será realizada a conexão com o servidor Primário.

[global]
repo1-path=/pgbackup/pg
repo1-host=192.168.7.102
repo1-host-user=postgres

[prod_dbacorp]
pg1-path=/var/lib/postgresql/18/main

recovery-option=primary_conninfo=host=192.168.7.100 port=5432 user=replicador password=replica

2.3 Configuração do servidor de Backup

Caso exista mais de um ambiente PostgreSQL, basta adicionar novas stanzas no mesmo arquivo.

[global]
repo1-path=/pgbackup/pg
process-max=2
log-level-console=info
log-level-file=debug
start-fast=y

[prod_dbacorp]
pg1-path=/var/lib/postgresql/18/main
pg1-host=192.168.7.100
pg1-host-user=postgres

3. Criação da Stanza

Uma Stanza representa um ambiente lógico de backup dentro do pgBackRest.

Cada cluster PostgreSQL possui sua própria Stanza, responsável por armazenar informações como:

  • Diretório PGDATA
  • Arquivos WAL
  • Histórico de backups
  • Configuração do ambiente

Criando a Stanza:

pgbackrest --stanza=prod_dbacorp stanza-create

Validando a configuração:

pgbackrest --stanza=prod_dbacorp check

4. Executando Backups

O backup é executado a partir do servidor de Backup.

Backup Full:

pgbackrest --stanza=prod_dbacorp --type=full backup

Conteúdo do artigo

Tipos de Backup

O pgBackRest suporta três modalidades.

Full

Realiza cópia completa do diretório PGDATA.

Differential (DIFF)

Armazena apenas os arquivos modificados desde o último backup Full.

Incremental (INCR)

Armazena apenas os arquivos alterados desde o backup imediatamente anterior.

Durante qualquer backup, o pgBackRest também arquiva automaticamente todos os arquivos WAL necessários para garantir uma recuperação consistente.

Importante destacar que o pgBackRest não remove arquivos WAL necessários para restaurar backups que ainda estejam dentro da política de retenção.

4.1 Consultando informações dos Backups

pgbackrest info

Este comando exibe diversas informações sobre os backups existentes, incluindo:

  • Tipo do backup;
  • Tamanho do banco;
  • Tamanho do backup;
  • Data e horário de início;
  • Data e horário de término;
  • WALs necessários para recuperação.
  • Conteúdo do artigo

5. Restore

Restore padrão utilizando o backup mais recente:

pgbackrest --stanza=prod_dbacorp --delta restore

Restore Point-in-Time (PITR)

pgbackrest \
--stanza=prod_dbacorp \
--delta \
--type=time \
--target="2026-01-28 22:59:00" \
--target-action=promote \
restore

O parâmetro --target-action=promote promove automaticamente o servidor restaurado para Primário após atingir o ponto de recuperação desejado.

Restore de um Backup específico

pgbackrest \
--stanza=prod_dbacorp \
--delta \
--set=20260128-202736F \
restore

O que faz o parâmetro --delta

Sem utilizar --delta, o pgBackRest remove completamente o conteúdo do diretório PGDATA antes de restaurar os arquivos do backup.

Conteúdo do artigo

Com --delta, ocorre uma comparação entre os arquivos existentes e os arquivos presentes no backup.

Somente arquivos diferentes são copiados.

As principais vantagens são:

  • redução do tempo de restauração;
  • menor volume de escrita em disco;
  • melhor desempenho em ambientes de grande porte.

5.1 Reconstruindo um servidor Standby

Caso o servidor Standby já exista e precise apenas ser recriado:

pgbackrest \
--stanza=prod_dbacorp \
--type=standby \
--log-level-console=info \
--set=20260128-202736F \
--recovery-option="primary_conninfo=host=192.168.7.100 port=5432 user=replicador password=replica" \
restore

Durante o restore, o pgBackRest grava automaticamente o parâmetro primary_conninfo no arquivo postgresql.auto.conf.

Após iniciar o serviço PostgreSQL, o servidor Standby iniciará automaticamente a sincronização com o servidor Primário.

Como foi utilizado:

--type=standby

o servidor permanecerá em modo Recovery, aguardando a replicação.

Conteúdo do artigo

6. Gerenciamento da retenção de Backups

Nunca remova backups utilizando comandos do sistema operacional como:

rm -rf

Toda exclusão deve ser realizada pelo próprio pgBackRest, garantindo consistência entre os backups e os arquivos WAL.

Manter apenas dois Backups Full

pgbackrest expire \
--stanza=prod_dbacorp \
--repo1-retention-full=2

Retenção baseada em tempo

Exemplo mantendo sete dias:

pgbackrest expire \
--stanza=prod_dbacorp \
--repo1-retention-full-type=time \
--repo1-retention-full=7

Exclusão de WALs antigos

pgbackrest expire \
--stanza=prod_dbacorp \
--repo1-retention-archive=7

Recursos adicionais

O pgBackRest oferece diversos parâmetros que podem melhorar desempenho e otimizar armazenamento.

Compressão

--compress-level=3

O nível varia de 1 a 9.

Quanto maior o nível:

  • maior compressão;
  • menor espaço em disco;
  • maior consumo de CPU.

Paralelismo

--process-max=4

Define a quantidade máxima de processos paralelos utilizados durante backup ou restore.

Configurando retenção diretamente no arquivo

Exemplo:

[global]

repo1-path=/pgbackup/pg

repo1-retention-full=2
repo1-retention-diff=4
repo1-retention-archive=7

process-max=2

log-level-console=info
log-level-file=debug

start-fast=y

Os principais parâmetros são:

Descrição

repo1-retention-full Quantidade de backups Full mantidos

repo1-retention-diff Quantidade de backups Diferenciais mantidos

repo1-retention-archiveQuantidade de WALs mantidos conforme política de retenção

Referências

Documentação oficial:

https://pgbackrest.org/user-guide.html

Voltar ao blog

Precisa de ajuda com seu banco de dados?

Diagnóstico sem compromisso com um DBA especialista.