PostgreSQL · 2026-03-07

PostgreSQL HADR을 repmgr로 관리하는 방법

repmgr을 이용해 PostgreSQL 고가용성(HADR)을 구성하고 운영하는 방법. 설치부터 구성 예제, failover 설정과 점검 절차를 포함한 설명

작성일 : 2026-03-07 ㆍ 작성자 : 관리자
post
목차

개요

PostgreSQL 고가용성(HADR)은 장애 시 자동 또는 수동으로 서비스를 연속성 있게 유지하는 핵심 요소다. repmgr은 복제, 모니터링, 장애조치(failover) 과정을 단순화한다. 이 글에서는 초보자도 이해하기 쉽게 repmgr 설치와 구성, failover 설정 및 테스트 절차를 차근차근 설명한다. 주요 키워드는 repmgr 설치 postgres, repmgr failover 설정, postgres repmgr 구성 예제다.

사전 준비

환경은 마스터 서버(primary)와 하나 이상의 슬레이브(standby)가 필요하다. PostgreSQL 버전 호환성, 네트워크 연결, 동일한 사용자 및 데이터 디렉터리 권한 확인이 선행되어야 한다. repmgr 패키지 설치를 위해 OS 패키지 매니저 접근과 postgres 계정 권한이 필요하다.

필수 항목

  • PostgreSQL이 설치되고 실행 중일 것
  • postgres 계정으로 SSH 접속 가능
  • 서버 간 시간 동기화(NTP)
  • 포트(기본 5432) 허용

repmgr 설치

리눅스 배포판별로 패키지를 설치한다. Debian/Ubuntu 계열 예시는 아래와 같다. 설치 후에는 repmgrd를 사용해 클러스터를 관리한다.

sudo apt-get update
sudo apt-get install -y repmgr postgresql-client

CentOS/RedHat 계열은 EPEL 또는 PostgreSQL 공식 저장소를 통해 설치할 수 있다. 설치 후 패키지 버전이 PostgreSQL과 호환되는지 확인한다.

기본 repmgr 설정

repmgr 구성 파일(repmgr.conf)은 보통 /etc/repmgr/ 또는 /var/lib/pgsql/repmgr/ 위치에 생성된다. 핵심 항목은 node_id, node_name, conninfo, data_directory, repl_user 등이다.

# 예시: /etc/repmgr/12/repmgr.conf
node_id=1
node_name='pg-primary'
conninfo='host=10.0.0.1 user=repmgr dbname=repmgr connect_timeout=2'
data_directory='/var/lib/postgresql/12/main'
repl_user='repmgr'
use_replication_slots=1
promote_command='repmgr standby promote -f /etc/repmgr/12/repmgr.conf'
follow_command='repmgr standby follow -f /etc/repmgr/12/repmgr.conf'

conninfo는 repmgr이 데이터베이스와 통신할 때 쓰는 문자열이다. 보안상 repmgr 전용 계정을 생성하고 최소 권한을 부여한다.

복제 구성 순서

기본 흐름은 다음과 같다. 마스터를 등록한 뒤 슬레이브를 클론하고 등록한다.

  • 1) 마스터에서 repmgr 사용자 생성 및 권한 설정
  • 2) 마스터에서 repmgr 등록(repmgr primary register)
  • 3) 슬레이브에서 마스터를 기준으로 데이터 복제(clone)
  • 4) 슬레이브에서 repmgr standby register 실행
# 마스터에서 사용자 생성 예시
sudo -u postgres psql -c "CREATE ROLE repmgr WITH REPLICATION LOGIN PASSWORD '비밀번호';"

# 마스터 등록
repmgr -f /etc/repmgr/12/repmgr.conf primary register

# 슬레이브에서 복제
repmgr -f /etc/repmgr/12/repmgr.conf standby clone 10.0.0.1
# 슬레이브 등록
repmgr -f /etc/repmgr/12/repmgr.conf standby register

failover 설정과 동작 방식

repmgr은 자동 장애조치(repmgrd 사용)와 수동 장애조치를 모두 지원한다. 자동 failover는 repmgrd 데몬이 장애를 감지하면 선호하는 후보를 승격(promotion)한다. 수동은 운영자가 repmgr standby promote 또는 repmgr standby follow 등을 통해 제어한다.

자동 failover 구성 포인트

  • repmgrd 데몬 활성화 및 systemd 서비스 등록
  • quorum 및 복제 슬롯 정책 검토
  • promote_command, follow_command 정확히 설정
  • 장애 감지 임계값 조정(repmgrd 관련 옵션)
# systemd 예시 단순 등록
[Unit]
Description=repmgr daemon
After=network.target

[Service]
User=postgres
ExecStart=/usr/bin/repmgrd -f /etc/repmgr/12/repmgr.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

테스트와 점검

구성 후에는 장애 상황을 모사해 정상 동작을 검증한다. 점검 목록은 다음과 같다.

  • 클러스터 상태 조회: repmgr cluster show
  • 장애 발생 시 승격 로그 확인
  • 애플리케이션의 연결 재시도 정책 점검
  • wal 배송, 복제 지연 체크
# 클러스터 상태 확인
repmgr -f /etc/repmgr/12/repmgr.conf cluster show

# 슬레이브 강제 승격 예시
repmgr -f /etc/repmgr/12/repmgr.conf standby promote

운영 시 고려사항

운영 환경에서는 로그와 모니터링이 중요하다. repmgr 로그, PostgreSQL 로그, 네트워크 상태를 함께 수집한다. 또한 백업 전략과 스냅샷을 병행하면 승격 후 데이터 무결성 확보에 도움이 된다. 장애조치 이후 다시 기존 마스터를 구성할 때는 재동기화 과정을 명확히 계획해야 한다.

마무리

repmgr은 PostgreSQL HADR을 관리하기에 적합한 도구다. 이 글에서는 설치, 주요 설정, repmgr failover 설정과 테스트 절차, postgres repmgr 구성 예제를 포함해 실무에서 바로 적용할 수 있는 흐름을 정리했다. 환경에 따라 세부 옵션을 조정하면 안정적인 고가용성 환경을 만들 수 있다.

repmgr PostgreSQL HADR repmgr 설치 postgres repmgr failover 설정 postgres repmgr 구성 예제 장애조치 고가용성