OPEN HYPER STEP
← 목록으로 (stack-analysis)
STACK-ANALYSIS · 46 / 90
stack-analysis
CHAPTER 46 / 90
읽기 약 2
FUNCTION

데이터 백업과 복구 전략


핵심 개념

자동 스냅샷·PITR·Logical/Physical·재해 복구 — RPO/RTO 정의.

본문

핵심 지표

📋 코드 (13줄)
RPO (Recovery Point Objective):
- 허용 가능한 데이터 손실 시간
- 예: 1시간 RPO = 마지막 1시간 데이터 손실 허용

RTO (Recovery Time Objective):
- 허용 가능한 복구 시간
- 예: 4시간 RTO = 4시간 내 복구


서비스 등급별:
- Tier 1 (금융): RPO 0, RTO < 1시간
- Tier 2 (이커머스): RPO 5분, RTO 4시간
- Tier 3 (블로그): RPO 1일, RTO 24시간

백업 종류

📋 코드 (14줄)
1. 논리 백업 (pg_dump)
   - SQL 파일
   - 작은 DB 적합 (<100GB)
   - 복구 느림

2. 물리 백업 (pg_basebackup, RDS 스냅샷)
   - 디스크 블록 복사
   - 큰 DB 적합
   - 복구 빠름

3. WAL Archiving + PITR
   - Write-Ahead Log 보관
   - 임의 시점 복구 가능
   - RPO 거의 0

RDS 자동 백업

📋 코드 (16줄)
[Daily Snapshot]
- 매일 자동 (선택 시간대)
- 7~35일 보관
- 무료 (RDS 비용에 포함)


[Continuous Backup (PITR)]
- 5분 간격 WAL 백업
- 보관 기간 내 임의 시점 복구
- 자동 활성화


[Manual Snapshot]
- 큰 변경 직전 수동 생성
- 무기한 보관 가능
- 추가 스토리지 비용

pg_dump 백업

BASH📋 코드 (20줄)
# 풀 백업 (압축)
pg_dump -h db.example.com -U postgres -F c -f backup.dump mydb

# 특정 테이블만
pg_dump -h db.example.com -U postgres -t users -t posts mydb > tables.sql

# 복구
pg_restore -h new-db -U postgres -d mydb backup.dump
psql -h new-db -U postgres -d mydb < tables.sql


# 자동화 — 매일 백업 + S3 업로드
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
pg_dump -F c $DATABASE_URL > /tmp/backup_$DATE.dump
aws s3 cp /tmp/backup_$DATE.dump s3://my-backups/postgres/
rm /tmp/backup_$DATE.dump

# crontab
0 3 * * * /opt/scripts/backup.sh

PITR (Point-In-Time Recovery)

BASH📋 코드 (10줄)
# AWS RDS — 콘솔에서 시점 선택
aws rds restore-db-instance-to-point-in-time \
  --source-db-instance-identifier mydb \
  --target-db-instance-identifier mydb-recovered \
  --restore-time 2026-04-29T10:30:00Z


# 자체 호스팅 — wal-g
wal-g backup-push /var/lib/postgresql/data
wal-g backup-fetch /var/lib/postgresql/data LATEST

멀티 리전 (재해 복구)

📋 코드 (18줄)
Primary (서울 리전):
- 메인 트래픽
- 매일 스냅샷

Standby (일본 리전):
- Read Replica
- 자동 페일오버 가능
- RPO < 1초


[재해 시]
1. DNS 전환 (Route53 헬스체크 자동)
2. Replica → Primary 승격
3. 클라이언트 재연결
4. RTO ~5분


비용: Primary의 100% (Replica 동일 사양)

백업 검증 (가장 중요)

📋 코드 (16줄)
❌ 백업 있어도 복구 한 번도 안 해봄 → 실제 재해 시 실패


✅ 정기 검증:
- 월 1회 — 새 RDS 인스턴스에 복구 테스트
- 자동화 — Lambda + RDS API
- 검증 항목:
  - 데이터 무결성 (핵심 테이블 row 수)
  - 스키마 일치
  - 애플리케이션 연결 가능


# 자동 검증 스크립트
psql -h restored-db -c "SELECT COUNT(*) FROM users;"
psql -h restored-db -c "SELECT MAX(created_at) FROM orders;"
# 차이 임계치 초과 시 alert

한국 표준 — KISA 가이드

📋 코드 (10줄)
[개인정보 백업]
- 분기 1회 이상
- 암호화 저장
- 별도 시설 보관

[금융 (전자금융감독규정)]
- 일 1회 풀 백업
- 시간당 incremental
- 다중 위치 (서울 + 부산)
- 정기 복구 훈련 (분기 1회)

다음 모듈

CH.47~52 "API 설계" — RESTful·OpenAPI·tRPC.


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

내 코드의 백업 복구 부분을 분석해서
실전 분석 + 개선 우선순위를 알려줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

백업 복구 관련 인기 라이브러리/패턴 5개를
비교 분석해서 패턴 추출를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

내 프로젝트 전체에서 백업 복구
최적화 가능 위치를 보고해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

2026년 한국 백엔드 시장의
백업 복구 트렌드를 솔직히 알려줘.

⭐ 이것만 기억하세요
데이터 백업과 복구 전략 이 3가지만 확실히 잡으세요
1.RPO/RTO 정의 = 백업 전략의 출발점
2.PITR = 5분 단위 임의 시점 복구 — RDS 기본 활성
3.백업 검증 안 하면 = 백업 없는 것 — 정기 복구 테스트


공유하기
진행도 46 / 90