Reconstruir rapidamente um standby com delta restore do pgBackRest
PostgreSQLBackup e PITRComando
sudo systemctl stop postgresql-16
# Keeps the existing PGDATA and fetches only differing files; writes standby.signal:
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=standby "--recovery-option=primary_conninfo=host=<primary_host> port=5432 user=replicator application_name=<standby_name>" restore
sudo systemctl start postgresql-16
psql -X -c "SELECT status, sender_host FROM pg_stat_wal_receiver;"O que faz
--delta compara os arquivos do PGDATA existente com o backup (tamanho/timestamp e checksum) e copia apenas os diferentes; --type=standby grava standby.signal e recovery-option adiciona primary_conninfo. O standby primeiro se atualiza a partir do archive e depois passa para streaming.
Quando usar
Para transformar de volta em réplica, sem cópia completa, um standby atrasado ou com timeline divergente, ou um antigo primário em que o pg_rewind falhou.
Atenção
O delta substitui/remove os arquivos diferentes ou extras do diretório de destino pelos do backup; executá-lo no servidor errado destrói os dados desse servidor. O pgBackRest se recusa a restaurar sobre um PostgreSQL em execução, mas verifique você mesmo que o serviço está parado. Guarde a senha no .pgpass em vez de no primary_conninfo.
Relacionados
- Configurar o arquivamento de WAL para o pgBackRest (archive-push/archive-get)
- Criar o stanza do pgBackRest e verificar o arquivamento (stanza-create/check)
- Fazer backups full, differential e incremental com pgBackRest
- Mostrar o catálogo de backups do pgBackRest e o intervalo do arquivo de WAL (info)
- Restaurar o backup mais recente com pgBackRest
- Restaurar para um ponto no tempo com pgBackRest (PITR, --type=time)