PostgreSQL repmgr 수동 설치 및 슬레이브 복제 설정 가이드

중요: 이 가이드는 PostgreSQL 및 시스템 관리에 익숙한 사용자를 대상으로 합니다. 명령은 루트 또는 postgres 사용자 권한으로 실행해야 합니다.
개요
repmgr은 PostgreSQL 기반 데이터베이스의 복제, 모니터링, 장애 조치(failover) 관리를 돕는 오픈소스 도구입니다. 이 튜토리얼은 repmgr 1.1.0 소스 코드를 직접 컴파일하여 설치하고, 마스터(master)와 슬레이브(standby) 간의 기본 복제를 설정하는 과정을 다룹니다.
핵심 단계 요약:
- 필요한 패키지 설치
- repmgr 소스 빌드 및 설치
- 마스터 데이터베이스를 슬레이브로 클론
- repmgr 설정 파일 생성 및 등록
- 모니터링 프로세스 시작 및 동기화 확인
5단계. 마스터와 슬레이브 양쪽에 repmgr 소스 코드 수동 설치
우선 repmgr 1.1.0 소스 아카이브를 /tmp로 다운로드합니다:
Download repmgr from http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz to /tmp.
빌드 전에 필요한 개발 패키지를 설치합니다. 예시(소스는 SUSE 계열 zypper 명령 사용):
zypper install make gcc postgresql-devel libxslt-devel pam-devel libopenssl-devel krb5-devel
이제 repmgr을 컴파일하고 설치합니다:
make USE_PGXS=1
make USE_PGXS=1 install
설치가 제대로 되었는지 다음 명령으로 확인합니다:
repmgr --version
repmgrd --version
마스터와 슬레이브 양쪽에서 repmgr이 설치되어 있어야 합니다. 다음 단계에서 마스터 데이터베이스를 슬레이브로 복제(clone)할 예정이므로 이 과정을 반드시 확인하세요.
6단계. 마스터 데이터베이스를 슬레이브(standby)로 클론 [슬레이브에서만 실행]
슬레이브 서버에서 postgres 사용자로 전환한 뒤 repmgr의 standby clone 기능을 사용해 마스터를 복제합니다.
su - postgres
repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster
진행 중 로그가 출력됩니다. 대략 다음과 유사한 로그가 보입니다:
클론이 완료되면 PostgreSQL을 슬레이브에서 시작합니다:
/etc/init.d/postgresql start
7단계. 마스터와 슬레이브에 repmgr 설정 파일 생성
마스터에서 repmgr 설정 디렉터리와 설정 파일을 생성합니다(경로 예시: /var/lib/pgsql/repmgr/repmgr.conf).
마스터용 repmgr.conf (예시):
cluster=test
node=1
conninfo='host=pgmaster user=postgres dbname=pgbench'
슬레이브용 repmgr.conf (예시):
cluster=test
node=2
conninfo='host=pgslave user=postgres dbname=pgbench'
주의: conninfo 문자열은 네트워크 접근성, 포트, 인증 정보에 맞추어 조정하세요.
8단계. 마스터·슬레이브 등록 및 모니터링 프로세스 시작
마스터에서 마스터 노드를 등록합니다:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register
슬레이브에서 슬레이브 노드를 등록합니다:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose standby register
등록 후 상태를 확인합니다:
psql pgbench -c 'select * from repmgr_test.repl_status'
슬레이브는 일반적으로 마스터보다 수 초 내지 1초 가량 뒤처집니다.
복제 동작 검증 예제
마스터에서 간단한 테이블을 만들고 값을 넣습니다:
psql pgbench -c "create table test ( test varchar(30));"
psql pgbench -c "insert into test values ( 'test123');"
슬레이브에서 데이터가 복제되었는지 확인합니다:
psql -h pgslave pgbench -c "select * from test"
성공적으로 값이 보이면 복제가 정상 동작합니다.
향후 개선할 점 및 주의사항
이 튜토리얼은 SR(single-replica) 환경에서 기본적인 복제 설정을 빠르게 안내합니다. 다음 항목을 고려해 개선하세요:
- 별도 repmgr 전용 사용자 계정 생성 후 운영(postgres 대신 전용 계정 권장).
- repmgr의 알려진 버그 및 패치 확인(예: 관련 커밋 링크 제공). 원문 커밋: https://github.com/greg2ndQuadrant/repmgr/commit/7427988628f754e57069453d65a71f79117c3a3d
- 마스터 장애 시 슬레이브 승격(promote) 절차 숙지 — repmgr 문서를 참고하여 자동·수동 승격 절차를 준비하세요.
- 복제 상태를 확인하는 방법은 여러 가지가 있습니다. PostgreSQL 공식 문서를 병행 확인하세요.
- repmgr 패키지의 README를 반드시 읽고 배포판별 차이를 이해하세요.
운영 체크리스트 (역할별)
관리자(설치 담당):
- 패키지 의존성 설치 확인
- repmgr 바이너리 버전 확인(repmgr –version)
- repmgr.conf 파일 소유자/권한 확인
DBA(운영 담당):
- 마스터의 데이터베이스 이름, 포트, 네트워크 접근성 검증
- 슬레이브 클론 후 데이터 무결성 검사(예: row count, 샘플 쿼리)
- 모니터링 알람(지연, 연결 실패) 설정
운영팀(서비스 안정성):
- 자동화된 장애 조치(failover) 절차 테스트
- 정기 백업 및 복원 절차 점검
검증 방법(테스트 케이스 및 수용 기준)
테스트 케이스:
- TC1: repmgr 설치 후 –version, repmgrd –version 출력
- TC2: 슬레이브 clone 성공 및 PostgreSQL 시작
- TC3: 마스터에서 생성한 테이블과 데이터가 슬레이브에 동일하게 존재
- TC4: repmgr에서 노드 등록 후 psql로 repl_status 조회 시 마스터/슬레이브가 모두 목록에 존재
수용 기준:
- 모든 TC가 수동 실행 기준으로 실패 없이 통과
- 슬레이브 지연(latency)이 허용 범위(정책적으로 정의) 내에 있음
- repmgrd가 정상 동작하여 모니터링과 알림을 수행
장애 대응 간단 실행 절차(Incident runbook)
- 증상 확인: 슬레이브 지연/연결 이상/replication 중단 로그 확인.
- 네트워크/포트 문제 확인: pg_hba.conf, 방화벽, 호스트 연결 테스트.
- 프로세스 상태 확인: PostgreSQL과 repmgrd가 실행 중인지 점검.
- 로그 분석: PostgreSQL 및 repmgr 로그에서 에러 검색.
- 복원 옵션:
- 슬레이브가 오래 뒤처졌거나 복구 불가 시, 슬레이브를 재클론.
- 마스터 장애 시 repmgr promote 또는 수동으로 pg_ctl promote 실행.
- 롤백: (잘못된 설정 적용 시) 최근 설정 변경 전 상태로 repmgr.conf 및 postgresql.conf 되돌림.
소액의 아키텍처 팁 및 위험(리스크) 요약
주요 리스크:
- 인증 및 권한 설정 부정확: repmgr가 데이터베이스에 접속하지 못함.
- 네트워크 불안정: 복제 지연 증가 또는 재동기화 필요.
- 버전 불일치: PostgreSQL과 repmgr 간 호환성 문제.
완화책:
- 별도 전용 계정과 최소 권한 정책 적용
- 모니터링과 알림 체계 구축
- 테스트 환경에서 버전 호환성 확인
용어집(한 줄 정의)
- repmgr: PostgreSQL 복제 및 장애 조치 관리 도구.
- master: 읽기/쓰기 역할을 하는 주 데이터베이스 노드.
- standby/slave: 마스터를 복제한 읽기 전용(또는 승격 가능한) 노드.
- conninfo: repmgr과 PostgreSQL이 통신할 때 사용하는 연결 문자열.
요약
이 가이드에서는 repmgr 1.1.0을 소스에서 빌드하고 설치한 뒤, 마스터를 슬레이브로 클론하고 repmgr로 노드를 등록해 모니터링을 시작하는 방법을 다뤘습니다. 설치 전 패키지 의존성을 확인하고, repmgr.conf의 conninfo를 환경에 맞게 조정하세요. 실운영 전 테스트 환경에서 전체 플로우(설치→클론→등록→장애 복구)를 반드시 검증하시기 바랍니다.
추가 참고 링크:
- 2ndquadrant: http://projects.2ndquadrant.com/repmgr
- PostgreSQL Wiki (Hot Standby): http://wiki.postgresql.org/wiki/Hot_Standby
- PostgreSQL Wiki (Binary Replication Tutorial): http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial
문의: 원문 작성자 이메일([email protected])로 연락할 수 있다고 안내되어 있으나, 실제 연락 전 내부 정책을 확인하세요.