PostgreSQL 17의 증분 백업: 실용 가이드

발행: (2026년 4월 2일 PM 04:42 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

PostgreSQL 17 Incremental Backup

소개

PostgreSQL 17은 네이티브 증분 백업 지원을 도입했으며, 이는 데이터베이스 백업 전략에 있어 큰 도약을 의미합니다. 매번 전체 데이터를 복제하는 대신, 증분 백업은 마지막 백업(전체 또는 증분) 이후 변경된 데이터 블록만을 캡처합니다. 이를 통해 백업 시간, 저장소 사용량 및 시스템 오버헤드가 크게 감소합니다. PostgreSQL 17 이전에는 pgBackRestBarman과 같은 서드파티 도구를 사용해야 했으며, 이는 추가적인 설정 및 유지 관리 부담을 초래했습니다. 이제 PostgreSQL에 네이티브 지원이 포함되면서 프로세스가 훨씬 간소화되었습니다.

증분 백업이란?

증분 백업은 이전 백업(전체 백업이든 이전 증분 백업이든) 이후에 발생한 변경 사항만 기록합니다. 모든 데이터를 복사하는 전체 백업과 비교할 때, 증분 백업은 더 가볍고 빠르며 저장 공간 효율이 높습니다.

PostgreSQL 17의 주요 기능

  • Native Integration – 증분 백업이 이제 PostgreSQL 핵심에 포함되어, 이 기능을 위해 외부 도구가 필요하지 않게 되었습니다.
  • Storage Efficiency – 변경된 데이터 페이지만 백업되어 저장소 사용량을 최소화합니다.
  • Faster Backups and Recovery – 매번 처리되는 데이터 양이 적어 백업 생성이 더 빠르고, 전체 백업 위에 필요한 변경 사항만 적용함으로써 복구가 간소화됩니다.

작동 방식: 단계별

단계 1 – WAL 요약 활성화

postgresql.conf에서 summarize_wal = on으로 설정합니다. 이렇게 하면 WAL 요약 프로세스가 활성화되어 수정된 데이터 블록을 추적합니다. 기본값은 off이며, 기본 서버나 스탠바이 서버 모두에서 활성화할 수 있습니다.

단계 2 – 전체 백업 수행

pg_basebackup을 사용하여 초기 전체 백업을 생성합니다. 이 백업이 이후 모든 증분 백업의 기반이 됩니다.

pg_basebackup -D /path/to/full_backup -F tar -z -P

단계 3 – 첫 번째 증분 백업 수행

데이터를 삽입하거나 수정한 후, pg_basebackup을 다시 실행하되 --incremental 플래그와 전체 백업의 backup_manifest 파일을 지정합니다. 이렇게 하면 PostgreSQL이 기준이 되는 시점을 파악하고 그 이후의 변경 사항만 캡처합니다.

pg_basebackup -D /path/to/inc1_backup --incremental --manifest /path/to/full_backup/backup_manifest -P

단계 4 – 추가 증분 백업 수행

추가적인 데이터 변경이 발생하면 또 다른 증분 백업을 수행합니다. 이번에는 이전 증분 백업의 backup_manifest 파일을 참조합니다. 각 증분 백업은 이전 백업의 매니페스트 파일을 사용해 체인 형태로 연결됩니다.

pg_basebackup -D /path/to/inc2_backup --incremental --manifest /path/to/inc1_backup/backup_manifest -P

백업 복원

복원은 PostgreSQL 17에 도입된 새로운 유틸리티 pg_combinebackup이 처리합니다. 전체 백업과 모든 증분 백업을 하나의 사용 가능한 백업 디렉터리로 병합합니다. 백업은 시간 순서대로 제공해야 합니다—전체 백업부터 시작하고, 그 다음에 각 증분 백업을 순서대로 나열합니다.

pg_combinebackup -D /path/to/combined_backup \
    /path/to/full_backup \
    /path/to/inc1_backup \
    /path/to/inc2_backup

병합이 완료되면 복원된 디렉터리의 postgresql.conf 파일에서 port를 조정하고 해당 데이터 디렉터리를 사용해 데이터베이스 서버를 시작합니다. 검증을 통해 전체 백업 및 모든 증분 백업의 레코드가 모두 존재하고 손상되지 않았음을 확인할 수 있습니다.

pg_combinebackup란 무엇인가?

pg_combinebackup는 증분 백업 체인으로부터 완전하고 복구 가능한 백업을 재구성하는 동반 유틸리티입니다. 병합 과정을 자동화하고 백업 체인의 일관성을 검증하여 복원 시 수동 개입이 필요 없도록 합니다.

Incremental Backup의 장점

  • 비용 절감 – 스토리지 사용량 감소는 클라우드든 온‑프레미스든 비용을 낮춥니다.
  • 성능 향상 – 데이터 전송량이 적어 시스템 부하가 감소하므로 특히 피크 운영 시간에 유용합니다.
  • 확장성 – 전체 백업이 비현실적인 대규모 데이터베이스나 빈번한 데이터 변경이 있는 환경에 적합합니다.

알아두어야 할 제한 사항

  • 이 기능이 작동하려면 summarize_wal을 활성화해야 합니다.
  • 증분 백업은 pg_basebackup과만 작동하며 대기 서버에서 수행할 수 없습니다; 기본 인스턴스에서 실행해야 합니다.
  • 복원은 완전하고 끊김 없는 백업 체인에 의존합니다. 체인 중 어느 백업이라도 누락되면 복구에 실패합니다.
  • 백업은 클러스터 수준에서 수행되며, 테이블별 백업은 지원되지 않습니다.
  • 기능이 올바르게 작동하려면 WAL 및 요약 파일을 적절히 보관해야 합니다.

결론

Native incremental backup in PostgreSQL 17은 두 가지 오랜 문제점—스토리지 낭비와 느린 백업 창—을 해결하면서 재해 복구를 위한 보다 견고한 기반을 마련합니다. pg_basebackup( --incremental 플래그 사용)과 pg_combinebackup의 조합은 특히 대규모 고거래 환경에서 전체 백업‑복구 워크플로우를 더 깔끔하고 효율적으로 만들어 줍니다.

0 조회
Back to Blog

관련 글

더 보기 »

개발자 가이드: AI 에이전트 프로토콜

소개 이 가이드는 MCP와 A2A와 같은 여섯 개의 프로토콜을 소개하며, AI 에이전트가 작동하는 방식을 표준화함으로써 맞춤형 통합 코드를 없애는 것을 목표로 합니다.