DBAtlas · Atlas de operações de banco de dados

Reconstruir rapidamente um standby com delta restore do pgBackRest

PostgreSQLBackup e PITR

Comando

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.

Abrir no DBAtlas →

Relacionados