DBAtlas · Атлас эксплуатации баз данных

Восстановить на момент времени через 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 бэкап, завершившийся до цели. Если цель раньше времени окончания бэкапа, восстановление не сможет достичь согласованности.

Открыть в DBAtlas →

Связанные материалы