데이터베이스 관리에서 **백업(Backup)**과 **복원(Recovery)**은 데이터 손실이나 시스템 장애 시 비즈니스 연속성을 보장하는 가장 중요한 작업입니다.
주요 백업 전략과 PostgreSQL(및 일반적인 RDBMS)에서 사용하는 핵심 방법을 정리해 드립니다.
 


1. 백업의 주요 유형

데이터의 규모와 서비스의 중요도에 따라 적절한 방식을 선택해야 합니다.

  • 논리적 백업 (Logical Backup)
     
    • 데이터를 SQL 문(INSERT, CREATE 등)으로 추출하는 방식입니다.
    • 장점: 용량이 작고, 다른 버전이나 다른 DB로 이전하기 쉽습니다.
    • 단점: 데이터가 많으면 백업과 복원 속도가 매우 느립니다.
       
  • 물리적 백업 (Physical Backup)
     
    • 데이터베이스의 실제 파일(데이터 디렉토리) 자체를 복사하는 방식입니다.
    • 장점: 대용량 데이터도 매우 빠르게 복구할 수 있습니다.
    • 단점: 특정 버전이나 OS 환경에 종속될 수 있습니다.
       

2. PostgreSQL 백업 및 복원 실전
 

PostgreSQL에서 가장 자주 사용하는 명령어들입니다.

① 특정 데이터베이스만 백업할 때 (pg_dump)

# 백업 실행
pg_dump -U [사용자명] -d [데이터베이스명] > backup_file.sql

# 복원 실행
psql -U [사용자명] -d [데이터베이스명] < backup_file.sql

② 전체 데이터베이스를 백업할 때 (pg_dumpall)

사용자 계정, 권한, 모든 DB를 한꺼번에 백업합니다.

# 전체 백업
pg_dumpall -U postgres > full_backup.sql

# 전체 복원
psql -U postgres -f full_backup.sql

3. 고급 백업 전략: PITR (Point-In-Time Recovery)


단순한 백업 파일은 "백업한 시점"으로만 돌아갈 수 있지만, PITR을 사용하면 장애 발생 직전의 특정 초 단위 시점으로 데이터를 되돌릴 수 있습니다.

  1. Base Backup: 전체 데이터의 스냅샷을 먼저 찍습니다.
     
  2. WAL(Write-Ahead Logging): 데이터 변경 이력을 기록한 로그 파일을 실시간으로 저장합니다.
     
  3. Recovery: 전체 백업을 불러온 뒤, 장애 발생 전까지의 WAL 로그를 순서대로 "재생"하여 복구합니다.

4. 백업 시 주의사항 (Best Practices)
 

  • 3-2-1 원칙: 데이터 사본을 3개 이상 보유하고, 2개의 서로 다른 매체(HDD, 클라우드 등)에 저장하며, 1개는 반드시 외부(다른 지역 또는 오프라인)에 보관하세요.
     
  • 복원 테스트: "백업이 성공했다"는 것과 "복구가 가능하다"는 것은 다릅니다. 정기적으로 복원 시뮬레이션을 수행해야 합니다.
     
  • 자동화: cron이나 스케줄러를 통해 매일 새벽 등 트래픽이 적은 시간에 자동 백업되도록 설정하는 것이 좋습니다.