설치·설계
버전 선택(지원 주기 고려), 패키지/소스 설치, 디렉터리·테이블스페이스·파라미터 표준, 확장(extension) 정책.
PostgreSQL
확장성과 표준 준수로 상용 DB의 대안이 된 PostgreSQL. 자동 장애조치가 되는 HA 클러스터, 시점 복구가 되는 백업, 근거 기반 튜닝, Oracle·Tibero에서의 전환까지 맡겨 주세요.
Architecture
가장 널리 쓰이는 오픈소스 조합: Patroni + 분산 합의 저장소(DCS) + PgBouncer/HAProxy + pgBackRest.
Patroni는 etcd·Consul·ZooKeeper 같은 DCS를 이용해 리더를 선출하고, 프라이머리 장애 시 가장 적합한 복제본을 자동 승격합니다. 애플리케이션은 HAProxy(또는 VIP)를 통해 항상 현재 프라이머리로 연결되고, PgBouncer가 커넥션 수를 제어합니다.
WAL은 pgBackRest로 지속 아카이빙되어, 전체 백업 + WAL 재적용으로 원하는 시점까지 복구할 수 있습니다.
Scope
버전 선택(지원 주기 고려), 패키지/소스 설치, 디렉터리·테이블스페이스·파라미터 표준, 확장(extension) 정책.
스트리밍 복제(물리), 논리 복제(publication/subscription), Patroni 자동 장애조치, 복제 슬롯 관리.
pgBackRest·Barman·pg_basebackup, WAL 아카이빙, 복구 목표 시점 지정 복구와 정기 검증.
shared_buffers·work_mem·WAL·체크포인트, autovacuum, 실행 계획·인덱스·파티셔닝.
pg_stat_statements·pg_stat_activity·대기 이벤트, 복제 지연, bloat, Grafana/PMM 대시보드.
pg_upgrade(--link 등) 또는 논리 복제를 이용한 저중단 메이저 업그레이드.
SCRAM-SHA-256 인증, pg_hba.conf 최소 허용, 역할 설계, TLS, 행 수준 보안(RLS), pgaudit.
ora2pg 평가·변환, PL/SQL → PL/pgSQL, 데이터 검증, 성능 재튜닝.
Replication
| 방식 | 특징 | 적합한 용도 | 유의 사항 |
|---|---|---|---|
| 스트리밍 복제 | WAL을 바이트 단위로 전송하는 물리 복제. 동기/비동기 선택 | HA, 읽기 복제본, DR | 메이저 버전·플랫폼이 같아야 함 |
| 논리 복제 | 테이블 단위 변경 데이터를 publication/subscription으로 전송 | 부분 복제, 메이저 업그레이드, 통합 | DDL·시퀀스는 별도 처리 필요 |
| Patroni | DCS 기반 리더 선출·자동 장애조치·구성 관리 | 운영 HA 표준 | DCS 가용성과 펜싱 설계가 핵심 |
| PgBouncer | 경량 커넥션 풀러(session/transaction/statement 모드) | 커넥션 폭증 완화 | transaction 모드에서 세션 상태 기능 제약 확인 |
Backup & PITR
전체 백업 + WAL 아카이브가 있으면 장애 직전·오작업 직전 시점으로 되돌릴 수 있습니다. 백업은 복구해 봐야 백업입니다.
# 1) 서비스 중지 후 목표 시점으로 복원
sudo systemctl stop postgresql
sudo -u postgres pgbackrest --stanza=main --delta \
--type=time "--target=2026-10-20 13:55:00+09" \
--target-action=promote restore
# 2) 기동 후 복구 완료 확인
sudo systemctl start postgresql
psql -c "select pg_is_in_recovery();" -- f 이면 승격 완료-- postgresql.conf: shared_preload_libraries = 'pg_stat_statements'
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
SELECT queryid, calls,
round(total_exec_time::numeric, 1) AS total_ms,
round(mean_exec_time::numeric, 2) AS mean_ms,
rows, left(query, 80) AS query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;Tuning
Migration
상용 DB 운영 경험이 있는 DBA가 호환성 차이를 미리 짚어 드립니다.
ora2pg 리포트로 오브젝트·PL/SQL 규모와 변환 난이도 산정
타입(NUMBER·DATE 등)·시퀀스·파티션·제약조건 매핑
패키지·프로시저·트리거를 PL/pgSQL로, 애플리케이션 SQL 수정
전체 적재 후 변경분 동기화 방식 결정, 건수·체크섬 검증
업무 대표 쿼리 실행 계획 비교·튜닝
리허설 → 컷오버 → 안정화 모니터링
Lifecycle
FAQ
복제 자체는 PostgreSQL 기본 기능으로 충분하지만, 장애 감지·승격·기존 프라이머리 격리·연결 전환은 별도 도구가 필요합니다. Patroni는 이를 자동화하는 대표적인 오픈소스입니다.
커넥션 수가 많거나 짧은 연결이 반복되는 환경에서 효과가 큽니다. 다만 transaction 풀링 모드에서는 세션 단위 기능(일부 prepared statement 사용 방식, 세션 변수 등) 제약을 확인해야 합니다.
논리 복제로 새 버전 클러스터를 동기화한 뒤 짧은 전환 시간만으로 넘어가는 방식이 일반적입니다. 중단 허용 시간이 있다면 pg_upgrade가 더 단순합니다.
옵티마이저·락·트랜잭션 동작이 달라 일부 쿼리는 재작성이나 인덱스 조정이 필요합니다. 이관 전후 대표 쿼리를 비교해 튜닝까지 포함해 진행합니다.
사용 중인 클라우드·DB 버전·구성과 고민을 알려주시면 진단 범위와 진행 방식을 제안드립니다.