PostgreSQL 고가용성 구축 방식 비교: Backup/Restore부터 PGD까지
작성일: 2025.09.30
김명준 차장, Consultant, Professional Services | EDB 코리아
PostgreSQL 시스템을 안정적으로 운영하려면 성능, 데이터 정합성, 보안뿐만 아니라 고가용성(High Availability, HA)도 함께 고려해야 한다. 고가용성은 장애가 발생하더라도 서비스가 중단되지 않거나 신속하게 복구될 수 있도록 서비스 연속성을 보장하는 것을 의미한다.
필요한 고가용성 수준은 서비스의 중요도, 허용 가능한 데이터 손실 범위, 목표 복구 시간 및 운영 환경에 따라 달라진다. PostgreSQL 생태계에서는 가장 기본적인 Backup/Restore부터 Physical Replication, Logical Replication, 사실상 제로 다운타임에 가까운 연속성을 제공하는 PGD(Postgres Distributed)까지 다양한 방식을 선택할 수 있다.
이 글에서는 주요 PostgreSQL 고가용성 구축 방식의 작동 원리와 장단점을 살펴보고, RPO(복구 시점 목표)와 RTO(복구 시간 목표), 주요 활용 시나리오를 비교한다.
핵심 요약
- Backup/Restore는 즉각적인 고가용성보다 재해 복구를 위한 최후의 안전망에 가깝다.
- Physical Replication은 PostgreSQL에서 가장 널리 사용되는 고가용성 구성 방식이다.
- Logical Replication은 테이블 단위 복제와 데이터 통합, 메이저 버전 업그레이드 등에 유연하게 활용할 수 있다.
- EDB Postgres Distributed(PGD)는 논리적 복제를 기반으로 충돌 해결, DDL 복제 및 글로벌 합의 메커니즘을 제공한다.
- 적합한 방식은 필요한 RPO·RTO, 쓰기 성능, 운영 복잡도 및 서비스 범위를 기준으로 선택해야 한다.
1. Backup/Restore: PostgreSQL 재해 복구의 최후 안전망
백업·복구는 현대적인 의미의 고가용성과는 거리가 있는 방법이다. 전체 클러스터를 백업하고 WAL을 아카이빙한 다음, 장애가 발생하면 백업본과 아카이빙된 WAL 파일을 사용해 특정 시점 복구(Point-in-Time Recovery, PITR)를 진행한다. 복구에 필요한 시간은 데이터 크기, 장비 사양, 네트워크 성능 등 다양한 요소의 영향을 받는다.
이를 위한 솔루션으로는 물리적 백업을 자동화하고 관리하는 Barman과 pgBackRest 등이 있다. pg_dump를 이용한 논리적 백업도 있지만, PITR을 통한 정밀한 재해 복구에는 주로 물리적 백업이 사용된다.
따라서 Backup/Restore는 즉각적인 가용성 확보보다는 재해 복구(Disaster Recovery, DR) 관점에서 RPO와 RTO 전략을 보완하는 최후의 안전망 역할을 한다.
2. Physical Replication: 가장 널리 사용되는 PostgreSQL HA 방식
Physical Replication은 PostgreSQL 생태계에서 가장 널리 사용되는 고가용성 구성 방식이다. 읽기와 쓰기가 가능한 Primary 서버에서 발생한 트랜잭션을 WAL을 통해 Standby 서버로 전달하고, Standby 서버는 전달받은 WAL을 재생하여 데이터 정합성을 유지한다.
PostgreSQL 서버의 모든 변경 사항이 WAL 레코드에 담겨 전송되고 그대로 반영되기 때문에 Standby 서버는 기본적으로 복구 모드(Recovery)로 동작한다. 다만 Hot Standby 모드에서는 대기 중인 서버에서도 읽기 전용 쿼리를 처리해 읽기 부하를 분산할 수 있다.
2-1. WAL Shipping
WAL Shipping은 WAL 파일을 Standby 서버로 직접 전달하는 방식이다. SCP나 SFTP 등으로 구현할 수 있지만, 실제 운영 환경에서는 일반적으로 archive_command와 restore_command 기반의 로그 배송 또는 Streaming Replication을 선호한다.
2-2. Streaming Replication
Streaming Replication은 Primary에서 발생한 WAL 레코드를 거의 실시간으로 Standby 서버에 전달한다. PostgreSQL이 기본적으로 지원하는 방식이며, 다수의 복제 관리 솔루션이 이를 기반으로 클러스터링을 제공한다.
Streaming Replication은 다시 비동기(Asynchronous) 방식과 동기(Synchronous) 방식으로 구분된다. 비동기 방식은 성능에 미치는 영향이 적지만, 장애가 발생하면 약간의 데이터 손실이 발생할 수 있다.
반면 동기 방식은 Standby 서버에 데이터가 안전하게 저장되었음을 확인한 후 트랜잭션을 최종 완료한다. 이에 따라 데이터 무손실(RPO=0)을 보장할 수 있지만, 쓰기 성능에 부하가 발생할 수 있다.
Primary에 장애가 발생하면 Standby 서버를 새로운 Primary로 승격해 고가용성을 확보하며, 이 과정을 페일오버(Failover)라고 한다. 이러한 복잡한 과정은 관리자가 직접 처리하기보다 repmgr, EFM, Patroni 등의 자동화 솔루션을 이용하는 것이 일반적이다.
이러한 솔루션은 장애 감지, 자동 승격 및 기존 Primary가 예기치 않게 다시 활성화되는 상황에 대비한 펜싱(Fencing) 기능까지 제공해 안정적인 클러스터 운영을 지원한다.
Streaming Replication을 사용하면 Hot Standby 모드로 읽기 부하를 분산하거나 Warm Standby 모드로 DR 환경을 구축할 수도 있다. 장애 감지, 자동 승격 및 라우팅 구성에 따라 일반적으로 수 초 내에 복구할 수 있지만, 상황에 따라 수십 초에서 수분이 걸릴 수 있다.
3. Logical Replication: 유연한 PostgreSQL 데이터 동기화
Logical Replication 역시 WAL을 활용하지만, WAL 레코드를 디코딩해 특정 테이블만 복제하거나 양방향 복제를 구현할 수 있다는 점에서 Physical Replication과 차이가 있다.
약간의 오버헤드는 존재하지만, 서로 다른 서버의 특정 테이블을 하나처럼 동기화할 수 있는 유연성을 제공한다. 이를 활용하면 무중단 메이저 버전 업그레이드, 데이터 웨어하우스로의 데이터 통합, 마이크로서비스 간 데이터 동기화 등 다양한 시나리오를 구현할 수 있다.
PostgreSQL 16부터는 WAL origin 필터를 활용해 양방향 복제 과정에서 발생할 수 있는 복제 루프를 방지할 수 있다. 이론적으로 Active-Active 구성이 가능하지만, 양쪽 노드에서 동일한 데이터를 동시에 수정할 때 발생하는 쓰기 충돌(Write Conflict)은 내장 기능만으로 해결되지 않는다. 따라서 애플리케이션 수준에서 정교한 충돌 해결 정책을 설계해야 한다.
또한 커뮤니티 PostgreSQL의 기본 Logical Replication은 테이블 데이터 중심으로 동작하며 DDL, 시퀀스 및 함수 등은 자동으로 복제되지 않는다. 따라서 스키마 변경은 별도로 관리해야 한다.
4. EDB Postgres Distributed(PGD): 분산 멀티 마스터 고가용성
PostgreSQL Logical Replication의 장점을 서버 단위로 확장하고 멀티 마스터의 한계를 보완한 솔루션이 EDB Postgres Distributed(PGD)이다. PGD는 논리적 복제 기술을 기반으로 자동 충돌 해결(Conflict Resolution), DDL 복제 및 글로벌 합의(Consensus) 메커니즘을 추가해 지리적으로 분산된 멀티 마스터 클러스터를 안정적으로 운영할 수 있도록 지원한다.
4-1. 스케일아웃(True Scale-Out) 역량
PGD는 단일 노드의 한계를 넘어 쓰기 성능을 수평적으로 확장할 수 있다. 트랜잭션 부하가 높은 애플리케이션에서 노드를 추가해 처리량을 크게 늘릴 수 있으며, 비즈니스 성장에 따라 유연하게 확장할 수 있다.
다만 모든 워크로드에서 선형 확장이 보장되는 것은 아니며, 시스템 설계와 트랜잭션 특성에 따라 결과가 달라질 수 있다.
4-2. 제로 다운타임 고가용성 및 재해 복구(Zero Downtime HA/DR)
멀티 마스터(Multi-Master) 아키텍처를 통해 특정 노드에 장애가 발생하더라도 다른 노드가 즉시 쓰기 작업을 이어받아 서비스 연속성을 보장한다. 지리적으로 분산된 데이터센터 간 복제를 통해 지역 단위 재해가 발생하더라도 데이터 손실 없이 서비스를 빠르게 재개할 수 있다.
4-3. 데이터 지역성 및 성능 최적화(Data Locality & Performance Optimization)
여러 지역에 데이터 사본을 배치하고 사용자와 가장 가까운 노드에서 읽기·쓰기 요청을 처리함으로써 지연을 최소화하고 응답 속도를 높일 수 있다. 전국 단위 또는 글로벌 서비스를 제공하는 조직에 특히 유용하다.
4-4. 유연한 마이그레이션 및 업그레이드(Seamless Migration & Upgrades)
PGD는 분산 아키텍처를 기반으로 무중단 업그레이드, 패치 적용 및 마이그레이션을 지원한다. 특정 노드를 클러스터에서 분리해 작업한 다음 다시 결합하는 방식으로 핵심 서비스의 연속성을 유지할 수 있다.
4-5. 오픈 소스 PostgreSQL 생태계 활용
PGD는 PostgreSQL을 기반으로 구축되어 오픈 소스 PostgreSQL의 강력한 기능과 생태계를 유지하면서 분산 데이터베이스의 장점을 추가로 제공한다.
PGD는 멀티 마스터 아키텍처를 통해 기존 Physical Replication 기반 솔루션에서 발생할 수 있는 서비스 단절 시간을 최소화하며, 사실상 제로 다운타임에 가까운 고가용성 시나리오를 구현할 수 있다.
이를 통해 PostgreSQL 생태계에서 일반적으로 사용되는 Physical Replication 기반 DR 솔루션보다 한 단계 발전된 형태의 DR 시스템도 구축할 수 있다.
5. PostgreSQL 고가용성 방식별 RPO·RTO 비교
| 방법 | RTO | RPO | 장점 | 단점 | 주요 용도 |
|---|---|---|---|---|---|
| Backup/Restore | 수십 분 ~ 수 일 | 수 분 ~ 수 시간 | 구현 단순, 최후의 안전망, PITR 가능 | HA 불가, 긴 복구 시간 | DR, 데이터 아카이빙 |
| Physical Replication (Async) | 수 초 ~ 수 분 | 수 초 이내 | 검증된 방식, 안정성, 읽기 부하 분산 | 데이터 유실 가능성 | 일반적 HA/DR |
| Physical Replication (Sync) | 수 초 ~ 수 분 | 0 (Zero) | 데이터 무손실 보장 | 성능 저하 가능 | 금융 등 핵심 서비스 |
| Logical Replication | 수 초 ~ 수 분 | 수 초 이내 | 선택적 복제, 무중단 마이그레이션 | 충돌 처리 필요 | 데이터 통합, 부분 복제 |
| PGD (Multi-Master) | 수 초 (무중단에 가까움) | 0 (동기 모드) | 글로벌 분산, 제로 다운타임 | 아키텍처 복잡, 상용 | 미션 크리티컬, 글로벌 서비스 |
6. 결론: 서비스 요구사항에 맞는 PostgreSQL 고가용성 전략
각 방식에는 고유한 장점과 제약 사항이 있다. 따라서 서비스 중요도, 허용 가능한 데이터 손실 범위, 목표 복구 시간 및 운영 복잡도를 고려해 Backup/Restore부터 PGD까지 적합한 방식을 선택해야 한다.
Backup/Restore는 재해 복구를 위한 기본 안전망으로 활용할 수 있고, Physical Replication은 일반적인 PostgreSQL HA·DR 환경에 적합하다. Logical Replication은 선택적 데이터 복제와 데이터 통합에 유연하며, PGD는 미션 크리티컬 또는 지리적으로 분산된 서비스에 필요한 멀티 마스터 고가용성 구성을 지원한다.
EnterpriseDB는 PostgreSQL 생태계를 확장하기 위한 노력의 하나로 고가용성 관련 기술과 해결 방안을 지속적으로 제시해 왔다. 또한 이러한 경험과 커뮤니티 기여 역량을 바탕으로 앞서 설명한 구성 방안을 엔터프라이즈 수준에서 지원하고 있다.
메일: salesinquiry@enterprisedb.com
PostgreSQL 고가용성 관련 자주 묻는 질문
PostgreSQL 고가용성이란 무엇인가요?
PostgreSQL 고가용성은 서버나 시스템 일부에 장애가 발생하더라도 데이터베이스 서비스를 지속하거나 신속하게 복구할 수 있도록 구성하는 것을 의미한다. 필요한 고가용성 수준은 서비스 중요도와 목표 RPO·RTO에 따라 달라진다.
Backup/Restore도 PostgreSQL 고가용성 방식인가요?
Backup/Restore는 즉각적인 서비스 연속성을 제공하는 현대적인 HA 방식과는 거리가 있다. 그러나 PITR과 재해 복구를 가능하게 하므로 RPO·RTO 전략을 보완하는 최후의 안전망으로 중요하다.
PostgreSQL 동기 복제와 비동기 복제의 차이는 무엇인가요?
비동기 복제는 성능에 미치는 영향이 비교적 적지만 장애 시 일부 데이터가 손실될 수 있다. 동기 복제는 Standby에 데이터가 저장된 것을 확인한 후 트랜잭션을 완료하므로 RPO=0을 보장할 수 있지만 쓰기 성능에 부하가 발생할 수 있다.
Physical Replication과 Logical Replication은 어떻게 다른가요?
Physical Replication은 WAL 레코드를 Standby에 반영해 서버 단위로 복제하는 방식이다. Logical Replication은 WAL을 디코딩해 특정 테이블만 복제할 수 있어 데이터 통합이나 메이저 버전 업그레이드 등에 유연하게 활용할 수 있다.
Logical Replication만으로 Active-Active 구성을 구현할 수 있나요?
PostgreSQL 16부터 WAL origin 필터를 이용해 양방향 복제 루프를 방지할 수 있으므로 이론적으로 Active-Active 구성이 가능하다. 다만 동일한 데이터를 동시에 수정할 때 발생하는 쓰기 충돌은 내장 기능만으로 해결되지 않아 애플리케이션 수준의 충돌 해결 정책이 필요하다.
EDB Postgres Distributed(PGD)는 어떤 환경에 적합한가요?
PGD는 멀티 마스터 구성, 글로벌 분산 및 사실상 제로 다운타임에 가까운 서비스 연속성이 필요한 환경에 적합하다. 특히 미션 크리티컬 서비스나 여러 지역에 걸쳐 운영되는 글로벌 서비스에서 활용할 수 있다.