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

Restaurar para um ponto no tempo com pgBackRest (PITR, --type=time)

PostgreSQLBackup e PITR

Comando

sudo systemctl stop postgresql-16
sudo -u postgres pgbackrest --stanza=<stanza> --delta --type=time "--target=2026-10-08 14:30:00+03" --target-action=pause restore
sudo systemctl start postgresql-16
# Recovery stops at the target (read-only); validate the data:
psql -X -c "SELECT pg_is_in_recovery(), pg_last_xact_replay_timestamp();"
# If correct, end recovery and open read-write on a new timeline:
psql -X -c "SELECT pg_wal_replay_resume();"

O que faz

Restaura um backup concluído antes do horário de destino e reaplica o WAL apenas até o destino; target-action=pause para no destino para que você valide os dados, e pg_wal_replay_resume() faz a promoção.

Quando usar

Para voltar ao momento imediatamente anterior a um erro lógico como um DELETE/DROP/UPDATE acidental.

Atenção

Todas as mudanças após o destino são perdidas neste cluster; quando possível, execute o PITR em um servidor separado e traga de volta apenas os dados afetados com pg_dump. Informe o fuso horário explicitamente no destino. O pgBackRest 2.24+ escolhe automaticamente um backup adequado anterior ao destino; em versões mais antigas especifique com --set um backup concluído antes do destino. Se o destino for anterior ao horário de término do backup, o restore não consegue atingir a consistência.

Abrir no DBAtlas →

Relacionados