Восстановить на момент времени через pgBackRest (PITR, --type=time)
PostgreSQLБэкап и PITRКоманда
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();"Что делает
Восстанавливает бэкап, завершившийся до целевого времени, и воспроизводит WAL только до цели; target-action=pause останавливается на цели, чтобы можно было проверить данные, а pg_wal_replay_resume() выполняет promote.
Когда использовать
Чтобы вернуться к моменту непосредственно перед логической ошибкой, такой как случайный DELETE/DROP/UPDATE.
Внимание
Все изменения после цели в этом кластере теряются; по возможности выполняйте PITR на отдельном сервере и переносите обратно только затронутые данные через pg_dump. Указывайте часовой пояс в цели явно. pgBackRest 2.24+ автоматически выбирает подходящий бэкап до цели; в более старых релизах укажите через --set бэкап, завершившийся до цели. Если цель раньше времени окончания бэкапа, восстановление не сможет достичь согласованности.
Связанные материалы
- Настроить архивирование WAL для pgBackRest (archive-push/archive-get)
- Создать stanza pgBackRest и проверить архивирование (stanza-create/check)
- Снять полный, дифференциальный и инкрементальный бэкапы через pgBackRest
- Показать каталог бэкапов pgBackRest и диапазон архива WAL (info)
- Восстановить последний бэкап через pgBackRest
- Быстро пересоздать standby через delta restore pgBackRest