DBAtlas · Atlas für Datenbankbetrieb

Mit pgBackRest auf einen Zeitpunkt wiederherstellen (PITR, --type=time)

PostgreSQLBackup & PITR

Befehl

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();"

Was es tut

Stellt ein Backup wieder her, das vor dem Zielzeitpunkt fertig wurde, und spielt WAL nur bis zum Ziel ein; target-action=pause hält am Ziel an, damit du die Daten prüfen kannst, und pg_wal_replay_resume() führt das Promote aus.

Wann einsetzen

Um zum Moment unmittelbar vor einem logischen Fehler wie einem versehentlichen DELETE/DROP/UPDATE zurückzukehren.

Vorsicht

Alle Änderungen nach dem Ziel gehen auf diesem Cluster verloren; führe PITR nach Möglichkeit auf einem separaten Server aus und übertrage nur die betroffenen Daten mit pg_dump zurück. Gib die Zeitzone im Ziel explizit an. pgBackRest ab 2.24 wählt automatisch ein passendes Backup vor dem Ziel; in älteren Releases gib mit --set ein Backup an, das vor dem Ziel fertig wurde. Liegt das Ziel vor der Endzeit des Backups, kann der Restore keine Konsistenz erreichen.

In DBAtlas öffnen →

Verwandte Einträge