LabHub

백업 — 지운 데이터를 되돌린다 · 베이스 + WAL · 실습

사고 30초 전으로

LabHub 에서 이어서 보기

목표

DELETE 를 잘못 돌린 뒤 사고 30초 전으로 되돌리는 일을 실제로 합니다.

환경

이 파드에는 PostgreSQL 16 이 이미 떠 있습니다(5432, DB labdb, 사용자
lab슈퍼유저입니다). 복구본은 같은 파드 안에 5433 으로 따로
띄웁니다.

export PATH=/usr/lib/postgresql/16/bin:$PATHexport PGDATA=/var/lib/postgresql/datapsql -h 127.0.0.1 -U lab -d labdb

작업 디렉터리

/root/work/wal       아카이브된 WAL/root/work/base      베이스 백업 (원본 — 건드리지 않는다)/root/work/restore   복구본 (base 를 복사해서 만든다)

단계

1. archive_mode = on + 재시작
2. pg_basebackup/root/work/base
3. 데이터 2행 + 목표 시각 → 03-target.txt
4. delete from ops_note + pg_switch_wal()
5. restore 디렉터리 + recovery.signal
6. 5433 으로 띄워 확인 (2행이어야 함)
7. pg_dump 와 비교 → 07-dump.txt
8. 정리 → 08-notes.md

반드시 지킬 것

단계 8개

  1. WAL 아카이빙을 켠다
  2. 베이스 백업을 뜬다
  3. 되돌아갈 시각을 남긴다
  4. 사고를 낸다
  5. 복구본을 만든다
  6. 지운 데이터가 살아 있는지 본다
  7. 논리 백업으로는 왜 안 되는지 본다
  8. 무엇이 없었으면 못 돌아왔는지