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()으로 승격한다.

사용 시점

실수로 인한 DELETE/DROP/UPDATE 같은 논리적 오류 직전 시점으로 되돌리기 위해.

주의

이 클러스터에서는 대상 시점 이후의 모든 변경이 손실된다. 가능하면 별도 서버에서 PITR을 실행하고 영향받은 데이터만 pg_dump로 되돌린다. 대상에 시간대를 명시한다. pgBackRest 2.24+는 대상 이전의 적합한 백업을 자동으로 선택하며, 이전 릴리스에서는 --set으로 대상 이전에 완료된 백업을 지정한다. 대상이 백업 종료 시각보다 이르면 복원이 일관성에 도달할 수 없다.

DBAtlas에서 열기 →

관련 항목