한양과학기술고등학교

에듀테크 프로젝트 대시보드

백업과 복원

pg_dump pg_restore pg_dumpall custom format PITR

논리 백업(pg_dump)은 SQL/아카이브로 뽑아내는 방식, 물리 백업은 데이터 파일 자체를 복사하는 방식입니다.

1. pg_dump — 단일 DB

# 커스텀 포맷(권장) — 압축·병렬·선택 복원 가능
pg_dump -Fc -d school -f school.dump

# 평문 SQL
pg_dump -Fp -d school -f school.sql

# 스키마만 / 데이터만
pg_dump -s -d school -f schema.sql
pg_dump -a -d school -f data.sql

2. 복원

createdb school_restore
pg_restore -d school_restore -j 4 school.dump      # 병렬 복원

# 평문 SQL 은 psql 로
psql -d school_restore -f school.sql

# 특정 테이블만
pg_restore -d school_restore -t students school.dump
역할·전역 객체
  • pg_dump 는 역할·테이블스페이스를 안 담음 → pg_dumpall --globals-only > globals.sql 를 따로

3. 정기 백업 (cron)

# /etc/cron.d/pg-backup  (매일 03:10)
10 3 * * * postgres pg_dump -Fc -d school -f /backup/school-$(date +\%F).dump && find /backup -name 'school-*.dump' -mtime +14 -delete

4. 물리 백업 · PITR 개요

언제 무엇을
  • 논리(pg_dump) — 수 GB 까지, 버전·플랫폼 이동, 일부만 복원. 느리고 시점복구 불가
  • 물리(pg_basebackup + WAL 아카이브) — 대용량, 특정 시각으로 복구(PITR), 복제의 기반. 클러스터 전체 단위

실전 규칙: 복원을 주기적으로 리허설하지 않은 백업은 백업이 아닙니다.

"복원을 테스트하기 전까지 그것은 백업이 아니다"