pgBackRest
Automação de backup físico e PITR para clusters PostgreSQL 18.4 auto-hospedados - configuração de stanza, arquivamento de WAL, simulações de restauração e integração com Patroni.
Receita
Cartão de referência rápida - pronto para copiar e colar.
# /etc/pgbackrest/pgbackrest.conf
[global]
repo1-type=s3
repo1-s3-bucket=pg-backups-prod
repo1-s3-region=us-east-1
repo1-retention-full=4
repo1-cipher-type=aes-256-cbc
[main]
pg1-path=/var/lib/postgresql/18/main
pg1-port=5432pgbackrest --stanza=main stanza-create
pgbackrest --stanza=main backup --type=full
pgbackrest --stanza=main checkQuando usar isso:
- Postgres auto-hospedado em VMs ou bare metal necessitando de backups S3 criptografados
- Requisitos de PITR com runbooks de restauração testados
- Clusters Patroni onde APIs de snapshot gerenciadas são insuficientes
Exemplo de Trabalho
Passo 1 - Habilitar arquivamento no PostgreSQL
ALTER SYSTEM SET archive_mode = on;
ALTER SYSTEM SET archive_command = 'pgbackrest --stanza=main archive-push %p';
SELECT pg_reload_conf();# Verificar fluxo de arquivamento WAL
pgbackrest --stanza=main checkPasso 2 - Cronograma de backup agendado
# /etc/cron.d/pgbackrest
0 2 * * 0 postgres pgbackrest --stanza=main backup --type=full
0 2 * * 1-6 postgres pgbackrest --stanza=main backup --type=diffPasso 3 - Simulação de restauração para host isolado
# Na sandbox de restauração (diretório de dados vazio)
pgbackrest --stanza=main --delta restore
pg_ctl -D /var/lib/postgresql/18/main start
psql -c "SELECT pg_is_in_recovery(), now();"O que isso demonstra:
archive-pushenvio contínuo de WAL para PITRcheckvalida o conjunto de backup e a continuidade do arquivo antes que você precise deles--delta restoreevita o re-download completo ao ensaiar mensalmente
Mergulho Profundo
Tipos de Backup
| Tipo | Quando | Dados de Restauração |
|---|---|---|
| full | Semanalmente como base | Arquivos inteiros do cluster |
| diff | Diariamente vs último full | Blocos alterados desde o full |
| incr | Opcional durante o dia | Blocos alterados desde o último backup de qualquer tipo |
Notas do Patroni
[main]
backup-standby=y
pg2-host=replica.internal
pg2-path=/var/lib/postgresql/18/main- Execute backups de uma réplica para reduzir o IO primário durante o horário comercial
- Certifique-se de que a réplica tenha
hot_standby = one não esteja atrasada durante a janela de backup
Verificar Integridade do Backup
pgbackrest --stanza=main info
pgbackrest --stanza=main verify-- Após a simulação de restauração
SELECT count(*) FROM pg_database;
SELECT max(created_at) FROM app.orders; -- linha de sanidade específica do aplicativoArmadilhas
- Duas ferramentas de backup -
pg_basebackupcron mais pgBackRest no mesmo cluster causa risco de corrupção e custo duplicado de S3. Correção: apenas um agente. - Falha silenciosa do
archive_command- WAL se acumula no disco primário se o push falhar. Correção: monitorepg_stat_archiver, alerte sobrefailed_count. - Restaurar sobre o diretório de dados em execução - destrói a produção. Correção: simulações de restauração usam host sandbox dedicado ou instância parada apenas.
pg1-pathincorreto - a stanza aponta para o caminho Debian, mas o RHEL usa um layout diferente. Correção: corresponda exatamente aSHOW data_directory;.- Credenciais S3 no host do banco de dados - função IAM ampla no primário. Correção: usuário IAM dedicado para backup; chaves
repo1-s3-*de privilégio mínimo.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Backups automáticos RDS/Aurora | Postgres gerenciado pela AWS | Você precisa de controle em nível de arquivo em auto-hospedado |
pg_basebackup + WAL manual | Pequeno nó único de desenvolvimento | PITR de produção com política de retenção |
| Barman | Equipe já padronizada em Barman | Adoção Greenfield de pgBackRest com operações nativas de S3 |
FAQs
O pgBackRest substitui backups lógicos?
Não. Backup físico mais PITR é para recuperação de desastres. Mantenha pg_dump periódico para restauração lógica em nível de tabela e upgrades de versão principal.
Por quanto tempo reter backups?
repo1-retention-full=4 mantém quatro backups completos. Adicione uma política de retenção de WAL alinhada ao RPO (geralmente 7-30 dias). Documente no runbook de DR.
Posso fazer backup do PG 17 e restaurar para o PG 18?
A restauração física permanece na mesma versão principal. Upgrades de versão principal usam pg_upgrade ou replicação lógica, não restauração entre versões principais do pgBackRest.
Relacionados
- Noções Básicas de Ferramentas - manifesto do conjunto de ferramentas
- Noções Básicas de PITR - alvos de recuperação
- Modo de Arquivamento e archive_command - arquivamento de WAL
- Patroni e etcd/Consul - topologia de HA
- Melhores Práticas de Ferramentas Essenciais - automatizar
check
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4, pgBackRest 2.55+ e Patroni 4.x em clusters auto-hospedados.