피드로 돌아가기
Dev.toDevOps
원문 읽기
Hashmap이 Go로 구현한 PostgreSQL WAL 아카이버(pgrwl)로 S3/SFTP 기반 스트리밍 백업과 영점 데이터 손실 PITR 지원
PostgreSQL Streaming WAL Archiver in Go (pgrwl)
AI 요약
Context
PostgreSQL 운영 환경에서 WAL(Write-Ahead Log) 아카이빙 시 신뢰성 있는 오프사이트 저장, 압축·암호화, 그리고 zero data loss 기반 Point-in-Time Recovery를 동시에 만족하는 통합 솔루션이 필요했다.
Technical Solution
- PostgreSQL replication protocol 기반 WAL receiver 구현: 동기식 WAL 스트리밍 지원으로 영점 데이터 손실 가능
- 로컬 파일시스템(fsync) → 압축(gzip, zstd-ready) → 암호화(AES-GCM) → S3/MinIO/SFTP 업로드 파이프라인 구성
- StatefulSet/CNPG/VM 환경에 배포 가능한 Kubernetes-native 아키텍처: Helm chart 및 YAML/JSON/ENV 설정 지원
- HTTP 서버 기반 restore_command 제공으로 PITR 복구 과정 자동화
- WAL retention manager를 통한 보관 정책 관리 및 모니터링·로깅(structured logging) 기능 통합
Key Takeaway
PostgreSQL 백업 시스템 설계 시 replication protocol 기반 스트리밍 아키텍처와 파이프라인 기반 보안 처리(압축→암호화→전송)를 결합하면, 단일 바이너리로도 프로덕션 수준의 신뢰성과 클라우드 네이티브 운영성을 동시에 달성할 수 있다.
실천 포인트
Kubernetes 환경에서 PostgreSQL을 운영하는 조직에서 pgrwl의 WAL receiver와 S3/SFTP 업로드 파이프라인을 StatefulSet으로 배포하면, 기존 스냅샷 기반 백업 대비 zero RPO(Recovery Point Objective) 기반 PITR 복구 시간 단축과 임의 시점 복구 가능성을 확보할 수 있다.