BDR ?.

Slides:



Advertisements
Similar presentations
을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
Advertisements

1 08 시스템 구성도 고려사항 * 웹 서버 클러스터 구성  클러스터 구축은 ㈜ 클루닉스의 Encluster 로 구축 (KT 인증,IT 인증 획득, 실제 클러스터 구축 사이트 200 여곳 )  웹 서버 클러스터는 Dynamic, Static, Image.
1 Lotte EDI 환경 설정 매뉴얼 LLTTTTEE Always with You OO.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
불특정 공격에 무너진 H 사 업무 시스템 서서히 저하 내부에서 원인 불명으로 네트워크의 속도가 서서히 저하 되는 현상이 발생 공격의 발생 핵심 장 비 서비스가 되다 되지 않는 현상이 심해지고 결국 핵심 장 비는 장애가 발생하게 됨 장비 장애 발생 핵심 장비 장애 전체.
오라클 백업과 복구.

PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
뇌를 자극하는 Windows Server 2012 R2
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
Windows Server 장. Windows Server 2008 개요.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
12장 데이터 읽기 일관성과 락.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Windows Server 장. 사고를 대비한 데이터 백업.
Windows 8 Ksystem G&I 설치.
5장 Mysql 데이터베이스 한빛미디어(주).
Mysql Install on Azure
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
4-1장. MySQL 제13장.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
HDFS와 대용량 데이터 처리 콘텐츠서비스연구팀 최완.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
뇌를 자극하는 Windows Server 장. Windows Server 2008 개요.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
KHS JDBC Programming 4 KHS
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
뇌를 자극하는 Windows Server 장. 장애 조치 클러스터.
5장 Mysql 데이터베이스 한빛미디어(주).
10장. 예외처리.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
Grade Server Team14. Attention Seeker
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
CHAP 13. 방명록 만들기 실습.
시스템 인터페이스 Lab3 Unix 사용법 실습.
Mobile SHI 사용자 메뉴얼 중공업조선CI그룹 전진형( )
JDBC Lecture 004 By MINIO.
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
설치 환경 □ 운영체제 버전 : CentOS Linux 7.2 □ 리눅스 커널 버전 :
홀인원2.0 설치 메뉴얼.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
뇌를 자극하는 Windows Server 2012 R2
Smart Workplace 개발자 가이드
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
USN(Ubiquitous Sensor Network)
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
오라클 넷(Oracle Net)의 개념 및 구성
S-Work 2.0 DRM 신규 버전 설치 가이드 SOFTCAMP
Open4U 공급업체 접속 방법 Open4U 시스템 신규 접속 방법 메인 화면 및 로그인 하기 초기 비밀번호 변경하기
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
오라클 11g 보안.
제 23 장 오라클에서 보안 기능.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
소리가 작으면 이어폰 사용 권장!.
CHAP 15. 데이터 스토리지.
 6장. SQL 쿼리.
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
K PaaS-TA 앱 운영.
7 생성자 함수.
SafeMSR 설정.
Presentation transcript:

BDR ?

천정대 백수, gt1000@gmail.com 자바 개발자 OTP 서버 개발, SI 보안 솔루션 < 보험사 < 일본 근무 < 리눅스 벤처 취미 여친 독거노인

00 순서 01. PostgreSQL 첫사랑 02. 이중화, DR 사고는 영화에서나? 04. Streaming Replication 05. 고객사 요구사항, BMT, POC 06. Streaming Replication Customizing 07. 실패 08. Bucard 09. BDR 이란? 10. BDR 특징 11. BDR 설치 12. 주의 해야 할점 13. 뭣이 중헌디? 14. 좋은 놈, 공부할 놈, 아쉬운 놈 15. 최근 소식

01 PostgreSQL 첫사랑 PostgreSQL Oracle Mandrake 알짜 레드햇 대학교 2000년 컴퓨터 공학 아이오 리눅스 Oracle PostgreSQL 알짜 레드햇 Mandrake

오라클 장애(Archive Log 용량 부족) 02 이중화, DR 사고는 영화에서나? 이중화. 접근제어 솔루션 펑 오라클 장애(Archive Log 용량 부족) 아침, 저녁, 주말 예고없이 발생 IT 업무 마비 로그 삭제 후 업무 가능. 수개월 지속 서버 하드 디스크 증설 고객사의 무지, 비용 솔루션 제공 업체의 전문성 부족 임시 방편

DR. IDC 센터 화재(2014.4.20) 02 이중화, DR 사고는 영화에서나? 전 후 DR 훈련은 기본 기능만 체크 테스트 환경이 구축되지 않았음 DR 용 IDC 센터가 무용 지물 1달 넘게 업무 마비 전 후

2014년 8월 보안회사 이직 03 PostgreSQL 10년만의 재회 PostgreSQL 사용중 공짜라는 이유만으로 DBA 없음 매뉴얼 부족

04 Streaming Replication 자체 개발한 이중화 Daemon 사용 서버 1대에서 C엔진, WAS, DB, 배치등을 관리 DB = Streaming Replication + Repmgr 자체개발 D A E M O N OS : Centos C Java Postgres Master Slave FailOver 사용자

05 고객사 요구사항, BMT, POC 이중화 장애 DR Multi Master 개선과 신규 개발을 동시에 진행 FailOver 시 원활한 전환이 잘 되지 않음 Master, Slave 전환시 Daemon 및 설정 파일 오류 발생 DR 애플리케이션 계층 복사는 없이 DB만 복제 Master, Slave1, Slave2 요구 Multi Master L4, 도메인 없이 IP로 구성 추가 비용 없이 공짜로.... 개선과 신규 개발을 동시에 진행 DR은 Master, Slave1, Slave2 구성에서 Slave2가 Slave1을 Master 설정 이중화 장애는 개선, Multi Master 는 근본적인 문제라 해결 불가능

05 고객사 요구사항, BMT, POC Master Slave (DR Master) Slave2 100.1.1.1 100.1.1.2 Slave2 (DR) 100.1.1.3 Target Target Master 서버 pg_hba.conf host replication postgres 100.1.1.1/32 trust host replication postgres 100.1.1.2/32 trust Slave 서버 pg_hba.conf host replication postgres 100.1.1.3/32 trust 추가 Slave2 > pg_basebackup -h 100.1.1.2 -p 5432 -U postgres -D /var/lib/pgsql/9.4.4/data --xlog --checkpoint=fast –progress Slave2 > recovery.conf primary_conninfo = 'host=100.1.1.2 port=5432'

06 Streaming Replication Customizing Postgres Master Master용 설정파일 Slave용 설정파일 이중화 D A E M O N FailOver 설정 파일 복사 Postgres Slave Master용 설정파일 Slave용 설정파일 설정 파일 복사 Master, Slave 서버에 Postgresql Master용, Slave용 2가지 설정 파일을 보관 postgresql.conf_master, pg_hba.conf_master postgresql.conf_slave, pg_hba.conf_slave FailOver 시 Daemon은 Master, Slave 용 파일을 복사해서 재가동 Master 일 경우 Slave 용 설정 파일을 복사 Slave 일 경우 Master 용 설정 파일을 복사

왜? 07 실패 01 02 03 PostgreSQL 를 반드시 중지 후 재가동 해야 함 접근제어, 패스워드 관리, VPN, OTP 솔루션의 경우 1초 이상 중단시 업무 마비 03 2대 이상 Multi Master를 구성해야 하는 고객사

08 Bucardo Asynchronous PostgreSQL Replication System https://bucardo.org/wiki/Bucardo 최종 버전 5.4.1(현재) 문제1 홈페이지 관리가 잘 되고 있지 않음 Version Upgrade가 늦음 문제2 기능적인 제약 사항이 많음 설치 및 관리가 불편함 문제3 복제 관련 오류가 빈번히 발생 이중화 서비스가 불안정

Bi-Directional Replication 09 BDR 이란? Bi-Directional Replication 2ndQuadrant와 열성적인 커뮤니티에 의해 만들어진 수준높은 첫번째 오픈 소스 Mutli-Master 복제 시스템 지리적으로 분산된 클러스터용으로 디자인된 고성능 비동기 logical replication 이며 2~48 node를 지원함 Triggers, Queue를 사용하지 않고 2ndQuadrant에서 개발된 WAL using the changeset extraction 메카니즘을 사용하므로서 Trigger-based 솔루션의 쓰기 확대 관련 오류를 피함

Concepts 09 BDR 이란? Multi-master asynchronous logical replication 직접 쓰여질 수 있음. 충돌 이슈를 방지하기 위해 Weakly coupled multi-master replication 기능 지원 asynchronous 로컬에 커밋되기 전에 다른 노드에 커밋되지 않음. 어떤 주어진 시간에 모든 노드에 대해 데이터가 동일하지 않을수 있으나 잠시 후 동기화 됨. 동기에 대한 기능은 향후 제공 예정 logical logical replication은 각각의 row 값을 복제함. 데이터 블록에 대한 변경이 전송되는 물리(블록기반)복제와 다른 레벨 이전의 streaming, hot standby 는 physical(block-based) replication 한 위치에서 다른 위치로 데이터를 복사하는 프로세스. bdr은 shared-storage architecture 가 아님. 데이터 베이스에 충분한 공간을 가지고 다른 노드와 통신할 필요없이 query를 만족시키는 모든 관련 인덱스등을 포함한 복사본을 보유하고 있음.

PostgreSQL Replication History 09 BDR 이란? PostgreSQL Replication History PostgreSQL 9.0(2010) Streaming Repliction(physical) PostgreSQL 9.4(2014) Logical Decoding(changeset extraction) physical 한 row를 테이블에 저장 한다면 insert 외에 모든 index entries를 기록 WAL의 insert 관련 byte/block 레벨의 모든 변화를 전송 logical WAL를 logical decoding(데이터 베이스 테이블의 영구 변화를 데이터 데이터 베이스 내부 상태에 대한 상세 지식없이 해석 가능하게, 알기 쉬운 포맷으로 추출하는 과정) 을 이용해서 storage level의 변화를 stream of tuples or SQL statements 로 전송

Logical Streaming Replication 09 BDR 이란? Logical Streaming Replication Master Master WAL Sender WAL Sender User User Apply Apply WAL Database Database WAL

10 BDR 특징 이중화 솔루션 기능 비교

10 BDR 특징 이중화 솔루션 성능 비교

11 설치 bdr 환경설정 공통 http://bdr-project.org/docs/stable/installation-source.html 참조 postgresql-bdr, bdr-plugin을 다운로드 postgresql.conf 파일 shared_preload_libraries = ‘bdr’ pg_ctl 시작후 아래 구문 실행 CREATE EXTENSION btree_gist CREATE EXTENSION bdr Master1 복제 그룹 생성 SELECT bdr.bdr_group_create( local_node_name := ‘test1', node_external_dsn := 'host=192.100.1.1 port=5432 dbname=gt1000‘ ); Master2 복제 그룹에 참여 SELECT bdr.bdr_group_join( local_node_name := ‘test2', node_external_dsn := 'host=192.100.1.2 port=5432 dbname=gt1000', join_using_dsn := 'host=192.100.1.1 port=5432 dbname=gt1000‘ );

12 주의 해야 할 점 Node Management group_join 에 참여한 노드는 이름이나 ip가 같으면 삭제 후 등록 불가 3 nodes 구성시 3번째 node의 status 가 i 로 표시됨, 복제는 잘됨 DDL Replication 복제되지 않거나, 금지, 제약이 있는 DDL이 있음 예) Alter Table 구문 이용시 default 값 사용 불가 Multi-master conflicts 분산 트랜잭션 매니저, 락 매니저를 지원하지 않음 예) Primary Key or Unique 충돌시 last-update-wins 적용 Global Sequences 오직 INCREMENT 1 만 지원, minvalue, maxvalue, cache 등 미지원 타입이 전부 bigserial(bigint)로 됨, 테이블 타입도 동일 예) create sequence test_seq USING bdr Repliction Sets bdr에 의해 만들어 지고 모든 테이블은 기본적으로 여기에 속함 table 단위, insert, update, delete 에 대한 복사 여부 설정가능

12 주의 해야 할 점 사용불가 Master1 Master2 DataBase 시퀀스 1, 2, 3, 4.... DataBase 100001, 100002, 100003.. Master1 Master2 1 홍길동 OTP 인증 2016.10.15 15:33:30.111111111 100001 허준 OTP 검증 2016.10.15 15:33:31.111111111 100002 gt1000 OTP 생성 2016.10.15 15:33:32.111111111 2 장금이 2016.10.15 15:33:33.111111111 ALTER SEQUENCE seq_user_group START WITH 30; ALTER TABLE user ADD COLUMN otp_code varchar(8) DEFAULT ‘00000000' NOT NULL; 사용불가

Oracle과 같은 기능은 불가능 13 뭣이 중헌디???? 애플리케이션 보정을 통한 보완 ALTER SEQUENCE xxx START WITH Sequence 대신 max + 1 사용 관리자 UI 화면 또는 Script를 통한 sequence 값 증가 Transaction Conflict에 따른 데이터 정합성 중요 테이블의 경우 관리자 UI 화면에서 테이블 데이터 수를 Master, Slave 상호 비교하여 보정

솔루션 관리자 UI 화면 13 뭣이 중헌디???? 클릭시 for 문으로 SELECT nextval(‘xx_seq') 100번 실행하여 Sequence를 증가 시킴 >> 시퀀스 보정 시퀀스명 xx_seq 시퀀스 증가값 100 적용 >> 테이블 동기화 확인 및 보정 서버 IP 테이블명 100.1.1.1 user_info(10) 100.1.1.2 user_info(12) user_group(27) policy(3) 보정 보정 보정

좋은 놈 14 좋은 놈, 공부할 놈, 아쉬운 놈 VIP Active Standby Server1 Server2 heartbeat network Active, Standby 이중화 전환이 용이 서버 구성은 Active, Standby. Database 구성은 Master, Master 로 구성시 네트웍 불안정으로 인한 불규칙적인 장애 발생시 지연시간 없는 Active, Standby 서버간 전환이 가능 (비권장) Active, Active, Active… N 구성시 Load Balancing, 세션 클러스트링 없는 IP 개별 접속 N개 Active 서버 구성이 용이 Selective Repliction 선택적 복제가 가능(이중화 테이블 복제하지 않음)

공부할 놈(운영 업무) 14 좋은 놈, 공부할 놈, 아쉬운 놈 서버 IP 변경시 가능 여부를 테스트 해 보지 않았음 장애로 인한 서버 교체시 master 서버 하드 장애 등의 이유로 교체가 필요한 경우, 중단 후 복구 기능이 필요. 장기간 방치시 동기화 시도 관련 오류 문제가 발생할 수도 있음 * There is no complex election of a new master if a node goes down or network problems arise. There is no wait for failover. Each node is always a master and always directly writeable.

아쉬운 놈 14 좋은 놈, 공부할 놈, 아쉬운 놈 퇴사 국내외 구축 사례 비공개 매뉴얼 빈약 2ndQuadrant 계약 요구 DBA가 아닌 개발자로서의 전문성 부족 타 솔루션 지식 부족, MySQL 과의 장,단점 Oracle 수준을 요구함. 중, 소 기업 타켓 같이 번역하고 테스트 할 사람이 필요

15 최근소식 PostgreSQL 9.6 에는 Global Sequences 문제를 다른 방식으로 접근할 예정 http://blog.2ndquadrant.com/bdr-is-coming-to-postgresql-9-6/ The years of effort we at 2ndQuadrant have put into getting the series of patches from BDR into PostgreSQL core have paid off. As of PostgreSQL 9.6, the only major patch that Postgres-BDR on 9.4 has that PostgreSQL core doesn’t, is the sequence access method patch that powers global sequences. This means that Postgres-BDR on 9.6 will not support global sequences, at least not the same way they exist in 9.4. The 9.6 version will incorporate a different approach to handling sequences on distributed systems, and in the process address some issues that arose when using global sequences in production.