20

비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent
Page 2: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

비즈니스 연속성을 위한

Postgres 고가용성 구성 사례 및

트러블슈팅

다음카카오 데이터플랫폼파트 | 엄준식

2

Page 3: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

PPAS(Postgres Plus Advanced Server) 도입 배경

3

Hierarchy Query 지원

DB Link 지원

Optimizer Hint 지원

Postgres Enterprise Manager에 의한 모니터링

xDB Replication에 의한 데이터 복제 및 이관

DRITA(Dynamic Runtime Instrumentation Tools Architecture)

Page 4: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Daum 클라우드 서비스

4

Page 5: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

클라우드 서비스 서버 구성도

5

마스터 DB

분산 DB

pgpool server

Page 6: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

클라우드 서비스 마스터 DB 이중화

6분산 DB

SELECT : 40%

SELECT : 40%

DML : 100%SELECT : 20%

pgpool server 마스터 DB

Page 7: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

클라우드 서비스 분산 DB 이중화

7

마스터 DB

분산 DB

pgpool server

Page 8: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Master DB Node Slave DB Node

Witness Node

EDB Failover Manager 개요

8

Agent

Agent Agent

Page 9: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

ZAP 서비스

9

Page 10: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Agent Agent

VIP

Agent Agent

VIP

ZAP 서비스 시스템 구성도

10

Agent

Agent

Page 11: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Postgres Enterprise Manager 개요

11

Page 12: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Postgres Enterprise Manager Client

12

Page 13: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

PEM Alert 설정

PEM에서 정의된 Alert 항목 Agent Level : Agents Down, Server Down

Server Level : CPU Utilization, Disk Consumption %

Cluster Level : Long-running Autovacumms, Long-running Queries

DB Level : Long-running Transactions, Total connections as % of MC

Schema Level : Table Size, Index Size, Average Table Bloat

Table Level : Dead Tuples %, Last Analyze, Last AutoVacuum

사용자 정의 Alert 항목 INFO

WARNING

ALERT

CRITICAL

13

Page 14: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

PPAS Server

PPAS Server

PPAS Server

PEM을 이용한 Monitoring

14

PEM Agent

PEM Agent

PEM Agent

MonitoringSystem

PEM Server

Page 15: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Online Table Reorg (by pg_reorg)

15

Trigger

MergeDML

(Insert, Update, Delete)

Row Copy

Old TableNew Table

Intermediate Log Table

Page 16: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Online Table Reorg (by pg_reorg)

16

Trigger

DML(Insert, Update, Delete)

Row Copy

Old TableNew Table

Merge

Intermediate Log Table

Page 17: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

Online Table Reorg (by pg_reorg)

17

테이블 단편화에 따른 온라인 테이블 재구성

작업절차 테이블 크기 확인 (테이블 재구성 전)

AUTOVACUUM = OFF 로 변경

테이블 Reorg 작업전 Lock Wait 확인

테이블 Reorg 실행

테이블 VACUUM

AUTOVACUUM = ON 로 변경

테이블 크기 확인 (테이블 재구성 후)

LOCK_FILE LOCK_FOLDER NAME_CHECKER LOCK_INFO LOCK_STATUS

Before After Before After Before After Before After Before After

1184MB 8960KB 5117MB 38MB 810MB 3960KB 1586MB 1036MB 4682MB 1689MB

Page 18: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

pgpool 이슈 및 최적화

18

pgpool 서버의 TIME_WAIT 이슈 일반적인 JDBC 커넥션의 startup packet과 DB Link packet의 길이가달라 정상적으로 커넥션 풀링이 되지 않는 이슈

패킷 비교 로직을 삭제하여 수정

주석으로 시작하는 select 문의 경우 분산이 안 되는 이슈 정상적인 SELECT 문으로 인식되지 못해 분산되지 못함

주석 부분을 SKIP하도록 수정

Alias 없는 서브쿼리의 경우 쿼리 분산이 안되는 이슈 pgpool의 파서 부분에서 alias 없는 subquery의 경우 에러를 발생시키지 않도록 수정

PPAS 메모리 사용량 증가 이슈 pgpool의 child_max_connections 값 수정

Page 19: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

xDB Replication Server

xDB Replication을 이용한 데이터 복제

19

Source DB Target DB

PublicationServer

SubscriptionServer

Page 20: 비즈니스연속성을위한 - Cuvix › cio_summit2015 › images › Track2-1_CIO... · 2015-03-11 · (Postgres Plus Advanced Server) ... PEM을이용한Monitoring 14 PEM Agent

xDB Replication을 이용한 데이터 복제

20

쿼리가 제약조건등의 위반으로 실행되지 못하는 경우 해당 제약조건을 삭제하고 쿼리를 실행한 후 제약조건을 재생성

Trigger 방식에 의한 데이터 동기화 Source DB에 변경 내역을 저장할 테이블을 생성하고 Trigger를 통해 변경 내역을 저장

서비스 쿼리에 의한 DML외에 동기화를 위한 추가적인 DML 발생

데이터 동기화에 대한 GAP 고려 주기적으로 Source DB의 변경 내역이 Target DB에 적용

동기화 주기를 짧게 설정하면 Source DB의 부하가 증가하고 길게 설정하면 데이터 동기화 GAP이 커짐

적용 완료한 데이터에 대한 Clean-up 부하 존재 Source DB쪽 clean-up 작업을 disable 시키는 것이 가능