본문 바로가기
실험실/db이행

제로베이스 설치 시 보안 · 운영 · 이중화 전략

by 죄니안죄니 2026. 1. 24.
반응형
  • Ora2Pg는 무료 오픈소스 (이건 그대로)
  • 두 번째 질문의 핵심은 “무료(PostgreSQL Community Edition) 서버”를 기준으로
    • 제로베이스 설치 시
    • 보안 이슈
    • 운영/관리 전략
    • 이중화(HA) 구축 전략
    • 그리고 필수 / 비필수 + 우선순위

Oracle 11g → PostgreSQL 15 마이그레이션 이후 실제 운영 서버 기준으로,

“실무에서 안 하면 반드시 문제 되는 것”과 “규모 커질 때 고려하는 것”


무료 PostgreSQL 15 서버 기준

제로베이스 설치 시 보안 · 운영 · 이중화 전략 (우선순위별 정리)


🔴 우선순위 1 — 절대 필수 (안 하면 사고/장애/보안 이슈 발생)

이건 “무료/유료”와 무관하게 운영 DB의 최소 생존 조건이야.


1️⃣ OS & 네트워크 보안 (DB 이전에 시스템부터)

필수 사항

  • DB 서버 전용 OS 계정 분리
    • postgres OS 계정 외에
    • 운영자 계정 / 배포 계정 분리
  • 방화벽
    • 5432 포트는 애플리케이션 서버 IP만 허용
    • 외부 접속 절대 금지 (특히 마이그레이션 끝난 후)
  • SSH 보안
    • 패스워드 로그인 차단
    • 키 기반 인증
    • sudo 최소화

👉 Oracle 환경에서는 DB가 “안쪽”에 숨어 있었을 가능성이 큰데

PostgreSQL은 기본 설정 그대로 두면 의외로 열려 있음.


2️⃣ PostgreSQL 인증 / 권한 모델 재설계 (Oracle과 가장 다른 부분)

필수 사항

  • postgres 슈퍼유저를 애플리케이션에서 사용 금지
  • 역할(Role) 분리
    • app_user (SELECT/INSERT/UPDATE/DELETE)
    • batch_user
    • migration_user (DDL 전용)
    • readonly_user
  • pg_hba.conf 명시적 관리
    • trust 절대 금지
    • md5 또는 scram-sha-256만 허용

📌 Oracle의 SYSTEM, DBA 감각으로 접근하면

PostgreSQL은 권한이 너무 쉽게 퍼짐 → 사고로 직결됨.


3️⃣ 백업 전략 (무료 PostgreSQL의 가장 중요한 운영 포인트)

무료 PostgreSQL =

❌ “자동 백업 없음”

❌ “장애 시 자동 복구 없음”

필수 구성

  • 논리 백업
    • pg_dump (스키마/데이터)
  • 물리 백업
    • pg_basebackup
  • WAL 아카이빙
    • Point-In-Time Recovery(PITR) 가능하게 설정

“백업 있다” ≠ “복구 가능하다”

복구 테스트를 반드시 해봐야 백업이 완성됨


4️⃣ 운영 기본 파라미터 튜닝 (기본값 그대로 쓰면 거의 확실히 느림)

필수 튜닝 대상

  • shared_buffers
  • work_mem
  • maintenance_work_mem
  • wal_buffers
  • max_connections
  • checkpoint_timeout
  • autovacuum 관련 옵션

Oracle은 많은 걸 자동으로 해주지만

PostgreSQL은 기본값 = 개발용 수준이라고 보면 돼.


🟠 우선순위 2 — 강력 권장 (안 하면 운영 피로도 폭증)


5️⃣ VACUUM / AUTOVACUUM 이해 및 정책 수립

PostgreSQL의 가장 큰 문화 충격 포인트.

  • DELETE/UPDATE 해도 공간이 바로 반환되지 않음
  • VACUUM 없으면
    • 디스크 증가
    • 성능 저하
    • 인덱스 비대화

권장 사항

  • autovacuum 기본 동작 원리 이해
  • 대량 배치/마이그레이션 이후 수동 VACUUM ANALYZE
  • 테이블 성격별 autovacuum 파라미터 조정

👉 Oracle의 “UNDO/TABLESPACE 자동 관리” 감각으로 접근하면 반드시 망함.


6️⃣ 모니터링 & 장애 감지

무료 PostgreSQL은

❌ “죽어도 아무도 알려주지 않음”

최소 권장

  • 커넥션 수
  • 디스크 사용량
  • WAL 증가 속도
  • replication lag (있다면)

Prometheus + Grafana, 혹은 간단한 스크립트라도 필수.


7️⃣ 로그 정책

권장 설정

  • log_statement (운영에서는 all 금지, ddl/slow query 위주)
  • log_min_duration_statement
  • 로그 로테이션 정책

Oracle의 AWR 같은 게 없으므로

로그가 사실상 유일한 사후 증거가 됨.


🟡 우선순위 3 — 상황형 (서비스 규모/중요도에 따라)


8️⃣ 이중화(HA) 전략 — “무료 PostgreSQL에서 가능한 현실적인 수준”

중요 포인트부터 말하면:

PostgreSQL Community Edition으로도 HA는 가능하지만

Oracle RAC 같은 수준은 아님


✅ 가능한 구조

① 스트리밍 복제 (Primary / Standby)

  • Primary 1대
  • Standby 1대 이상 (read-only)
  • WAL 기반 실시간 복제

② Failover 방식

  • 수동 Failover (운영자가 전환)
  • 또는 Patroni + etcd/consul 기반 자동 Failover

📌 자동 Failover는 가능하지만

  • 운영 난이도 ↑
  • 설정 실수 시 잘못된 승격(split-brain) 위험 있음

❌ 불가능 / 주의 사항

  • Oracle RAC처럼 “멀티 노드 동시 쓰기” 불가
  • Active-Active 구조 아님
  • 트랜잭션 일관성 모델이 다름

HA가 필수 아닌 경우

  • 내부 시스템
  • 단일 장애 허용 가능
  • 복구 시간(RTO) 수십 분 허용

이 경우:

  • 단일 Primary
  • 백업 + 빠른 복구 스크립트
  • 이게 오히려 안정적일 수 있음.

🔵 우선순위 4 — 비필수지만 알면 좋은 것

  • Connection Pooler (pgBouncer)
  • Read Replica 분리
  • 파티셔닝 전략 고도화
  • Extension 관리 정책 (pg_stat_statements 등)
  • 업그레이드 전략 (15 → 16 → 17)

한 줄 요약 (실무 감각 버전)

  • 무료 PostgreSQL = 공짜 DB가 아니라 “운영 책임이 전부 내 것인 DB”
  • Oracle에서 자동으로 되던 것:
    • 백업
    • 튜닝
    • HA
    • 장애 감지
    • 👉 PostgreSQL에선 직접 설계 안 하면 없음
  • 대신:
    • 구조가 단순
    • 성능 예측 가능
    • 라이선스 리스크 없음
반응형

댓글