PostgreSQL · 2025-12-20

PostgreSQL 물리 복제와 논리 복제 비교 및 설정 방법

PostgreSQL의 물리 복제와 논리 복제 차이점과 구성 절차를 초보자 시각에서 정리한 기술 설명서

작성일 : 2025-12-20 ㆍ 작성자 : 관리자
post
목차

개요

PostgreSQL 복제는 고가용성과 읽기 확장을 위해 자주 사용된다. 물리 복제와 논리 복제는 목적과 동작 방식에서 차이가 있다. 이 글은 두 방식의 차이, 장단점, 기본 설정 절차를 초보자도 이해하기 쉽게 설명한다.

물리 복제(Physical Replication)

개념

물리 복제는 데이터베이스 클러스터의 바이너리 레벨 상태를 그대로 복제한다. WAL(Write-Ahead Logging)을 스트리밍하여 마스터에서 발생한 변경을 그대로 슬레이브에 적용한다. 모든 데이터 파일과 내부 상태가 동일하게 유지된다.

장점

  • 설정과 관리가 비교적 단순하다.
  • 모든 변경(DDL 포함)이 자동으로 복제된다.
  • 복제 지연이 적고, 복제된 노드는 장애 시 빠르게 승계 가능하다.

단점

  • 테이블 단위의 선택적 복제가 불가능하다.
  • 버전이나 아키텍처가 달라지면 복제 호환성 문제가 발생할 수 있다.
  • 슬레이브는 읽기 전용이며 일부 복구 시 제약이 있다.

기본 설정 절차

물리 복제의 핵심 단계는 마스터에서 WAL 송신을 허용하고, 슬레이브에서 베이스백업을 받아 복제 연결을 설정하는 것이다.

마스터 설정 (postgresql.conf)

listen_addresses = '*'
wal_level = replica
max_wal_senders = 5
wal_keep_size = '512MB'
archive_mode = on
archive_command = 'cp %p /var/lib/postgresql/wal_archive/%f'

접근 제어 (pg_hba.conf)

host replication replicator 192.168.0.0/24 md5

슬레이브 초기화

pg_basebackup -h master_host -D /var/lib/postgresql/data -U replicator -P -R

-R 옵션은 standby.signal 또는 recovery.conf 설정을 자동 생성하여 복제 연결을 구성한다. 슬레이브는 재시작 후 자동으로 마스터에 연결한다.

논리 복제(Logical Replication)

개념

논리 복제는 데이터 변경을 논리적 레코드 단위로 전송한다. 특정 테이블이나 행 단위로 복제 가능하며, 서로 다른 스키마나 버전 사이에서도 유연하게 동작한다. 기본적으로 게시(publication)와 구독(subscription) 개념을 사용한다.

장점

  • 테이블 단위 선택적 복제가 가능하다.
  • 데이터 마이그레이션이나 버전 업그레이드 시 유용하다.
  • 복제 대상에 필터링, 변환을 적용할 수 있는 확장성이 있다.

단점

  • DDL 변경은 자동으로 복제되지 않아 별도 처리 필요하다.
  • 설정과 운영이 물리 복제보다 복잡할 수 있다.
  • 대량 트래픽 환경에서는 지연이 발생할 수 있다.

기본 설정 절차

논리 복제는 wal_level을 logical로 설정하고, 퍼블리케이션을 생성한 후 서브스크립션을 구성한다.

공통 설정 (postgresql.conf)

wal_level = logical
max_replication_slots = 10
max_wal_senders = 10

게시 생성 (마스터)

-- 예: 모든 테이블 게시
CREATE PUBLICATION my_pub FOR ALL TABLES;
-- 특정 테이블 게시
CREATE PUBLICATION my_pub_tables FOR TABLE public.users, public.orders;

구독 생성 (슬레이브 혹은 리시버)

CREATE SUBSCRIPTION my_sub
CONNECTION 'host=master_host port=5432 dbname=mydb user=replicator password=secret'
PUBLICATION my_pub;

구독 생성 시 초기 데이터 동기화도 수행한다. 필요에 따라 WITH (copy = false) 옵션으로 초기 복사를 생략할 수 있다.

물리 vs 논리 비교 요약

  • 사용 목적: 고가용성 및 빠른 장애 복구는 물리 복제에 적합하다. 테이블 단위 복제나 데이터 통합은 논리 복제가 유리하다.
  • 호환성: 물리 복제는 동일 버전/아키텍처에 의존한다. 논리 복제는 이질적 환경에서 유연하다.
  • 운영 복잡도: 물리 복제가 단순하다. 논리 복제는 세밀한 제어와 추가 관리가 필요하다.

운영 팁과 주의사항

  • 접속 사용자 권한은 최소 권한 원칙으로 구성한다. 복제 전용 계정을 생성한다.
  • WAL 보존 정책(wal_keep_size, archive)을 환경에 맞게 조정한다. 보존이 짧으면 슬레이브가 따라잡지 못하는 상황 발생 가능.
  • 논리 복제 사용 시 DDL 변경 계획을 세운다. 스키마 변경이 복제 지연이나 충돌을 유발할 수 있다.
  • 모니터링과 경고 체계를 마련한다. pg_stat_replication, pg_replication_slots 등을 주기적으로 확인한다.
  • 테스트 환경에서 장애 복구 절차를 검증한다. 복제 설정만으로는 모든 장애 시나리오를 커버하지 못한다.

문제 해결 체크리스트

  • 연결 실패: pg_hba.conf와 방화벽 설정, 사용자 인증 정보를 확인한다.
  • 슬롯 누적: 논리 슬롯이 소비되지 않으면 디스크 점유가 증가하므로 불필요한 슬롯 제거가 필요하다.
  • 복제 지연: 네트워크 대역폭과 WAL 생성량, I/O 성능을 점검한다.

결론

물리 복제는 간단하고 안정적인 장애 대응에 유리하다. 논리 복제는 선택적 복제와 마이그레이션에 강점이 있다. 목적과 운영 환경을 고려해 적절한 방식을 선택하고, 설정·테스트·모니터링을 병행하면 안정적인 복제 환경을 구성할 수 있다.

postgresql 복제 postgres 물리 복제 설정 logical replication postgres 설정 물리 vs 논리 복제 postgres pg_basebackup wal_level logical replication slot hot standby