C.W.K.
Stream
Lesson 06 of 10 · published

Backup: Logical vs Physical

~14 min · apps, backups

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

두 종류 백업, 두 복구 story

Logical 백업 (pg_dump) 이 데이터 재생성하는 SQL statement. 버전 가로질러 portable, 선택적 (DB 한 개, 테이블 한 개), human-readable. 복원 느림, 주간 archive 또는 Postgres 버전 간 마이그레이션에 OK.

Physical 백업 (pg_basebackup) 이 데이터 디렉토리의 byte-for-byte 복사. 잡고 복원 빠름, WAL archiving 과 결합 시 point-in-time recovery (PITR) 지원 가능. 프로덕션 정답.

3-2-1 룰, 적용

데이터 복사본 셋, 두 다른 매체, 한 off-site. 호스트 Postgres 면: live DB + 제공자 snapshot + 자체 off-site 복사 (예: nightly logical dump 를 S3/R2/Backblaze 로). Self-hosted 면: live + 로컬 snapshot + 원격.

복원 테스트

테스트 안 한 백업이 wish. 주기적으로 최신 백업을 샌드박스에 복원; 행 카운트 확인; smoke-test 쿼리 실행. 백업 깨졌단 거 처음 발견하는 날이 prod down 인 날이면 안 됨.

Code

Logical 백업 (DB 한 개)·bash
# Plain SQL dump — readable, 복원 느림
pg_dump -h prod-db -U app -F p -f mydb.sql mydb

# Custom format — 압축, parallel 복원, 선택적
pg_dump -h prod-db -U app -F c -f mydb.dump mydb

# Custom dump 복원
createdb mydb_restored
pg_restore -h localhost -U app -d mydb_restored mydb.dump
선택적 dump 와 복원·bash
# 한 schema, 한 테이블, 데이터만, 스키마만 dump...
pg_dump -h prod -U app -t public.orders -t public.line_items mydb > orders.sql
pg_dump -h prod -U app --schema-only mydb > schema.sql
pg_dump -h prod -U app --data-only --table=public.users mydb > users_data.sql
Physical base 백업·bash
# Base 백업 (replication-capable user 필요)
pg_basebackup -h prod -U replicator -D /var/backups/pg/$(date +%F) -X stream -P -R
# Point-in-time recovery 위해 WAL archiving 과 결합

External links

Exercise

운영하는 어느 DB 든 logical 백업. 샌드박스의 신선한 DB 에 복원. 행-count 비교 쿼리 실행. 걸린 시간 문서화 — 그게 최소 recovery time objective.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.