PostgreSQL 백업 전략: pg_basebackup · pg_dump · PITR
pg_basebackup, pg_dump, PITR의 개념과 설정 절차, 복원 흐름을 초보자가 이해하기 쉽게 정리한 실무 중심의 요약
목차
서론
데이터 손실은 운영 환경에서 큰 리스크다. PostgreSQL은 다양한 백업 방식을 제공하며, 목적과 복구 요구 수준에 따라 적절히 조합하는 것이 중요하다. 이 글에서는 기본 백업 도구인 pg_basebackup과 pg_dump, 그리고 시간 기준 복구(PITR)의 개념과 설정을 초보자도 이해하기 쉽게 설명한다.
백업 옵션 이해
물리 백업 vs 논리 백업
물리 백업은 데이터 파일의 블록 단위 복사다. 복구 시 동일한 상태로 복원하기에 적합하다. 논리 백업은 테이블과 데이터의 SQL 덤프를 생성한다. 버전 업그레이드나 선택적 데이터 복원에 유리하다.
언제 어떤 방법을 선택할까
- 전체 서버 복제나 빠른 복원이 필요하면 pg_basebackup 사용
- 개별 데이터베이스나 테이블 단위로 이동이 필요하면 pg_dump 백업 복원으로 처리
- 특정 시점으로 복구해야 하면 postgresql pitr 구성으로 WAL 아카이브와 함께 운영
pg_basebackup 사용법
pg_basebackup은 물리적 전체 백업 도구다. 스트리밍 방식으로 WAL을 함께 받으면 일관된 상태로 백업 가능하다. 기본 사용 예시는 다음과 같다.
pg_basebackup -h 192.168.0.10 -D /var/lib/postgresql/backup -U replicator -Fp -Xs -P
옵션 설명:
- -D: 백업 대상 디렉터리
- -U: 복제 사용자
- -Fp: 포맷(plain) 지정
- -Xs: WAL 포함(스트리밍)
- -P: 진행 표시
실무에서는 백업을 압축하고 스토리지로 전송하는 스크립트를 결합한다. 또한 복제 사용자 권한과 pg_hba.conf의 접근 설정이 선행되어야 한다.
pg_dump 백업 복원
pg_dump는 SQL 덤프나 맞춤형 포맷을 제공한다. 소규모 데이터베이스나 개별 객체를 옮길 때 유용하다. 예시는 다음과 같다.
pg_dump -h localhost -U dbuser -F c -b -v -f /backups/dbname.backup dbname
pg_restore -h localhost -U dbuser -d newdb -v /backups/dbname.backup
-F c는 커스텀 포맷으로, -b는 대용량 객체 포함, pg_restore를 통해 선택 복원 가능하다. 덤프 방식은 버전 호환성에 주의해야 한다. 메이저 버전 차이는 pg_dumpall이나 pg_upgrade를 고려한다.
postgresql pitr 구성
PITR은 특정 시점으로 복구할 때 사용한다. 기본 원칙은 기본 백업(물리)과 WAL(Write-Ahead Logging) 아카이브의 조합이다. 구성 흐름은 다음과 같다.
- postgresql.conf에서 wal_level을 replica 이상으로 설정
- archive_mode를 on으로 설정
- archive_command로 WAL 파일을 안전한 저장소로 복사
- 정기적으로 base backup을 생성
예시 설정:
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/wal_archive/%f'
복원 시에는 base backup을 복원한 뒤 recovery.signal 또는 recovery.conf(버전별)와 함께 restore_command를 지정해 원하는 시점까지 WAL을 적용한다.
# recovery.conf 예시
restore_command = 'cp /var/lib/pgsql/wal_archive/%f %p'
recovery_target_time = '2025-12-01 12:34:00'
복원 절차 요약
- 가장 최근의 base backup을 복원
- restore_command를 통해 WAL을 적용하면서 원하는 시점까지 복구
- 정상 상태 확인 후 온라인 서비스 재개
복원 시에는 로그와 체크포인트 상태를 반드시 확인한다. 특히 네트워크 전송 지연으로 일부 WAL이 누락되지 않았는지 점검해야 한다.
운영상 권장사항
- 백업 정책을 문서화하고 정기 복원 연습을 수행
- 백업은 로컬과 원격 스토리지를 분산 보관
- 백업 주기와 보존 정책을 비즈니스 요구에 맞춰 설계
- 모니터링으로 archive 실패나 백업 실패를 알림 처리
결론
pg_basebackup 사용법, pg_dump 백업 복원 절차, postgresql pitr 구성은 서로 보완적이다. 목적에 따라 물리 백업과 논리 백업을 조합하고, WAL 아카이브로 PITR을 구성하면 다양한 복구 시나리오에 대응할 수 있다. 처음에는 단순한 스크립트로 시작하되, 운영 안정화 단계에서는 자동화와 모니터링을 강화하는 것이 핵심이다.