pg_basebackup + WAL 아카이브로 백업과 PITR (pgBackRest 없이)
PostgreSQL난이도: 중급소요 시간: 45–90분추가 도구 없이 PostgreSQL 자체 도구로 물리 백업을 구성합니다: archive_command로 연속 WAL 아카이브, pg_basebackup으로 야간 base backup, pg_archivecleanup으로 보존 관리. 특정 시점 / 트랜잭션 / restore point로 복구(recovery.signal, restore_command, recovery_target_*), timeline, 정기 복원 훈련까지 다룹니다. 결과적으로 아카이브된 WAL, 야간 백업, 시험을 거친 복구 경로를 갖추게 됩니다. 대안: 증분/병렬/암호화 백업, S3, 기성 보존 관리가 필요하면 pgBackRest 가이드, 테이블/데이터베이스 이전이나 단일 테이블 복구에는 논리 백업(pg_dump, PITR 불가)을 사용합니다.
구성: 서버 1대. streaming 또는 Patroni에서는 아카이브 디렉터리를 모든 node가 공유(NFS)
시나리오
- WAL 아카이브와 야간 base backup 구성 — 최초 구성: archive_command로 연속 WAL 아카이브, pg_basebackup 스크립트, /etc/cron.d 예약, 보존과 WAL 정리. archive_mode 때문에 한 번 짧은 재시작이 필요합니다.
- 특정 시점으로 복구 (PITR: 시간, xid, LSN, restore point) — 데이터가 실수로 삭제/변경되었거나(DROP, DELETE, TRUNCATE) 서버/디스크를 잃은 경우: base backup을 풀고 아카이브의 WAL을 대상 시점까지 적용합니다. 전체 cluster를 중지하고 대상 시점으로 되돌리며, 그 이후의 변경은 유실됩니다.
- 복원 훈련 (별도 디렉터리, 운영 환경 무영향) — 백업이 실제로 복원되는지 증명합니다(월 1회 권장): 최신 base backup을 검증하고(pg_verifybackup), 별도 디렉터리에 풀어 아카이브와 함께 별도 포트로 시작하며, 소요 시간(RTO)을 측정합니다. 운영 환경은 건드리지 않습니다.
- 오래된 base backup과 WAL 아카이브 정리 — 아카이브나 백업 디스크가 차거나 보존 정책이 바뀐 경우: 오래된 base backup을 삭제하고, pg_archivecleanup으로 가장 오래된 백업 이전의 WAL을 제거합니다(먼저 dry-run). 데이터베이스는 계속 열려 있습니다.
시작하기 전에
- PostgreSQL …가 설치되어 실행 중입니다(pg-install). 데이터 디렉터리는 …입니다.
- …와 …가 데이터 디스크와 분리된 디스크/NFS 공유에 영구 마운트(fstab)되어 있습니다…. 모든 PostgreSQL 서버에서 같은 경로입니다(failover 후 새 primary가 같은 아카이브에 써야 함)…. 공간: (보존 백업 수 + 1) × 압축된 데이터 크기 + 일일 WAL 양 × 보존 일수.
- 다른 아카이브/백업 도구(pgBackRest, Barman, WAL-G)가 설정되어 있지 않습니다. 두 도구가 같은 WAL을 서로 다른 곳으로 옮기면 양쪽 모두 불완전해집니다.
- 시계가 NTP로 동기화되어 있습니다(PITR 대상 시각은 서버 시계 기준으로 해석됨).
- archive_mode 변경을 위한 짧은 재시작 시간이 확보되어 있습니다.
- 애플리케이션을 중지했고, 대상 이후의 모든 변경이 유실된다는 점을 승인받았습니다.… Standby/replica는 복원 후 다시 구성합니다.…
가이드 단계
- WAL 아카이브와 base backup 구성 — 아카이브와 백업 디렉터리 준비 · WAL 아카이브 스크립트 작성 · 스크립트에 실행 권한 부여와 시험 · PostgreSQL 아카이브 설정 작성 · PostgreSQL 재시작 · 아카이브 설정을 Patroni에 쓰기 (edit-config) …
- 복원 훈련 — 훈련 디렉터리 준비와 최신 백업 선택 · 백업 풀기와 검증 (pg_verifybackup) · 훈련 instance를 아카이브와 함께 시작 · 데이터 검증 · 훈련 instance 중지와 정리
- 보존과 WAL 정리 — 백업, 아카이브 크기, 필요한 가장 오래된 WAL · 보존 범위 밖의 base backup 삭제 · WAL 정리를 먼저 dry-run으로 확인 · WAL 아카이브 정리 · 아카이브가 계속 동작하는지 확인