백업 매니페스트 최상위 객체

백업 매니페스트 최상위 객체 (Top-level Object)

백업 매니페스트라는 JSON 문서는 여러 객체로 이루어져 있는데, 그중 맨 바깥에 있는 최상위 객체가 전체 문서의 뼈대를 잡아요. 이 객체에는 백업의 버전 정보부터 파일 목록, WAL 범위, 그리고 마지막 줄의 검증값까지, 매니페스트가 담는 핵심 키들이 전부 들어 있어요. 하나씩 짚어 볼게요.

출처: 공식문서

담고 있는 키들

백업 매니페스트의 최상위 객체에는 다음 키들이 들어 있어요.

  • PostgreSQL-Backup-Manifest-Version — 정수 값이에요. PostgreSQL 17부터는 2이고, 그 이전 버전에서는 1이에요. 매니페스트가 어떤 규약으로 쓰였는지를 알려주는 버전 표지예요.
  • System-Identifier — 백업을 만든 PostgreSQL 인스턴스의 데이터베이스 시스템 식별자예요. 이 키는 PostgreSQL-Backup-Manifest-Version2일 때만 존재해요.
  • Files — 항상 객체의 리스트로, 백업에 포함된 각 파일을 하나씩 설명해요. 단, 백업을 사용할 때 필요한 WAL 파일과 매니페스트 자체는 이 목록에 포함되지 않아요. 각 객체의 구조는 Section 70.2에서 자세히 다뤄요.
  • WAL-Ranges — 항상 객체의 리스트로, 특정 타임라인에서 읽을 수 있어야 하는 WAL 레코드의 범위를 각각 설명해요. 각 객체의 구조는 Section 70.3에서 설명해요.
  • Manifest-Checksum — 이 키는 매니페스트 파일의 마지막 줄에 항상 있어요. 값은 그 앞의 모든 줄에 대한 SHA-256 체크섬이에요. 체크섬 방식을 고정해 두었기 때문에 클라이언트가 매니페스트를 점진적으로 파싱할 수 있어요.

왜 SHA-256을 고정으로 쓰나

Manifest-Checksum에 쓰는 방식은 SHA-256으로 고정되어 있어요. CRC-32C보다 계산 비용이 크지만, 매니페스트는 보통 작아서 그런 추가 계산이 크게 문제 되지 않아요. 대신 방식을 고정해 두면 도구들이 매니페스트를 앞에서부터 읽어가며 검증할 수 있다는 장점이 생겨요.

더 알아보기 (Learn more)

  • 파일 목록 항목의 구조: Section 70.2 Backup Manifest File Object
  • WAL 범위 항목의 구조: Section 70.3 Backup Manifest WAL Range Object
  • 매니페스트를 직접 쓰는 도구: pg_basebackup, pg_verifybackup