반응형
- 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에선 직접 설계 안 하면 없음
- 대신:
- 구조가 단순
- 성능 예측 가능
- 라이선스 리스크 없음
반응형
'실험실 > db이행' 카테고리의 다른 글
| Oracle SQL을 PostgreSQL SQL로 바꿀 때 MyBatis에서 자동 치환 가능한 것 / 절대 안 되는 것 목록 (1) | 2026.01.30 |
|---|---|
| Ora2Pg가 지원하는 SQL 변환 범위 (0) | 2026.01.30 |
| Ora2Pg로 변환 후 “오브젝트별로” 직접 체크/수정해야 하는 포인트 정리 (0) | 2026.01.24 |
| 2컨테이너 실용화 (1) | 2026.01.22 |
| 결과파일의 관리 (0) | 2026.01.22 |
댓글