SlideShare a Scribd company logo
1 of 18
MYSQL
REPLICATIO
2018.02.28 OPEN LAB
2018.02.28 OPEN LAB
목차
▸ DB서버 이중화를 안했을 경우
▸ DB서버 이중화.
▸ Replication..?
▸ Replication의 원리.
▸ 구성 방법
▸ Master & Slave Replication
▸ Dual Master Replication
▸ Dual Master & Slave Replication
▸ SHADING & Horizontal Partitioning
2018.02.28 OPEN LAB
이중화를 안했을 경우....
▸만약 VideoTag 서비스가 DB서버를 한개만 쓰고 있다고 가정
해 봅시다. 그런데 갑자기 DB서버가 프로세스가 멈추거나 고
장이 났다면..?
▸프로세스가 죽었으면 이는 불행 중 다행이다. 프로세스가 죽
었을 동안 이용은 못하지만 프로세스만 다시 살리면 어느정도
복구는 가능하다.
▸하지만 DB서버가 물리적으로 고장 났다고 생각해보자. 고치
는 것도 어려울 뿐더러 시간도 오래 걸린다.
▸위와 같은 상황을 대비하기 위해, 그리고 효율성을 높이기 위
해 이중화는 필요하다. 그렇다면 어떻게 진행 해야 하는것일
까...?
2018.02.28 OPEN LAB
DB 서버 이중화
▸그렇다면 이중화는 어떻게 진행 해야 할까..?
▸간단하다. 웹 서버를 이중화 하는 것처럼 DB 서버도 여러개를 두면
된다.
▸다만.. DB서버를 여러개를 만드는 것은 어렵지 않다. 하지만 DB에
서 가장 중요한것은 바로 데이터이다. 데이터를 어떻게 동기화 시
키느냐가 DB 서버 이중화의 핵심 포인트이다. 그렇다면 어떤 방법
이 있을까..?
2018.02.28 OPEN LAB
REPLICAION,,,?
▸응답, 뒤로 젖혀짐, 사본, 복제 라는 뜻을 가지고 있다.
▸일반적으로 Computer Engineering에서 리플리케이션은 데이
터를 실시간으로 복제하는 것을 말한다.
▸즉, 데이터 백업을 물리적으로 다른 서버에 실시간으로 한다
는 것을 말한다.
▸MySQL 3.23.15 부터 지원, 3.23.31부터 안정화 되었다.
2018.02.28 OPEN LAB
REPLICATION의 종류
▸Replication를 이용한 구현은 대표적으로 아래 3가지가 있다.
▸Master & Slave Replication
▸Dual-Master Replication
▸Dual-Master & Slave Replication
▸여기서 Master는 데이터의 갱신/참조 두가지 종류의 쿼리 모
두를 받아 들이는 서버를 말하며, Slave는 참조 쿼리만 받아
들이는 서버를 말한다.
2018.02.28 OPEN LAB
REPLICATION의 원리[1] - 3개의 쓰레드.
▸Replication은 3개의 쓰레드를 사용해서 구현된다. Master에서 생성
되는 쓰레드 1개와 Slave에서 생성되는 2개의 쓰레드(I/O 쓰레드,
SQL 쓰레드) 이다.
▸우선 START SLAVE 라는 명령어로 Slave는 I/0쓰레드가 생성되고 이
I/O 쓰레드는 Master 로부터 바이너리 로그 파일을 요청 한다. 그러면
Master는 쓰레드를 하나 생성해서 바이너리 로그 파일을 Slave로 전
달하고, I/O 쓰레드가 해당 내용을 받아서 릴레이 로그를 생성한다. 그
러면 Slave의 SQL 쓰레드는 릴레이 로그를 읽어서 로그 안에 있는 명
령문을 Slave에서 실행시켜 데이터를 동기화 한다.
▸하나의 Master는 접속된 Slave 별로 하나의 쓰레드를 생성하고, 각
Slave는 자신만의 I/O 쓰레드와 SQL 쓰레드를 가진다.
2018.02.28 OPEN LAB
REPLICATION의 원리[2] - 바이너리 로그
▸바이너리 로그에는 데이터를 지금 또는 나중에 업데이트 하는 모든
명령문이 이벤트 형태로 저장된 로그 파일이다.
▸SELECT, SHOW와 같은 참조 명령문은 기록되지 않으며 각 명령문
이 데이터를 업데이트하는 소비 시간 정보를 가지고 있다.
▸바이너리 로그의 목적은 DB 장애 발생시 데이터를 복구하거나,
Replication 구성시 Slave로 보내져야 하는 명령문을 기록하기 위해서
이다
▸보통 host_name.nnnnnn 과 같이 생성 되며 재시작 될때만다 로그 파
일이 1씩 증가 된다.
▸SHOW binary logs; 명령어로 생성된 로그를 확인 할 수 있다.
2018.02.28 OPEN LAB
REPLICATION의 원리[3] - 릴레이 로그
▸릴레이 로그는 Slave 에서 생성되는 로그 파일이다. Slave의 I/O쓰
레드가 Master로부터 갱신 로그를 수신해서 슬레이브 측에 저장한
로그 입니다.
▸이 갱신 로그를 Slave의 SQL쓰레드가 모두 처리해서 Master와
Slave의 동기화를 진행 합니다.
▸또한 Master에서 생성된 바이너리 로그와 포맷 형식이 같으나, 바
이너리 로그와는 달리 SQL 쓰레드가 모든 이벤트를 처리하면 해당
로그파일을 삭제 합니다.
▸데이터 복제를 위해서 Slave는 릴레이 로그에서 어디까지 처리 되
었는지를 알아야 하는데 이 정보를 포지션 정보라고 한다.
2018.02.28 OPEN LAB
REPLICATION의 원리[4] - 포지션 정보
▸Slave는 리플리케이션을 완료한 위치정보를 알고 있습니다.
그러므로 Slave를 재부팅 한다던가 종료 되었을때 다시 재가
동 된다 하더라도 Slave는 종료한 시점부터 다시 데이터를 복
제합니다.
▸이렇게 Master의 Host 정보, 로그 파일명, 로그 파일내에서
처리한 포인트 정보를 포지션 정보라고 합니다.
▸이 정보는 SHOW SLAVE STATUS 라는 SQL로 확인 가능하
다.
2018.02.28 OPEN LAB
REPLICATION의 원리[5] -비동기 데이터 복사
▸Replication은 로그를 기반으로 데이터를 복제 합니다. 즉
Master에서 수행한 갱신 처리가 동시에 Slave로 반영 되는 것
이 아니라, 시간차가 어느정도 존재 한다는 것입니다. 그래서
이를 비동기 데이터 복사 라고 합니다.
▸Replication 방식이 아닌 Cluster 방식의 이중화를 사용할 경
우 동기 복사 또는 반동기 복사를 사용하기도 합니다. ( EX:
Galera Cluster )
2018.02.28 OPEN LAB
MASTER & SLAVE REPLICATION
▸Master는 갱신과 참조 두가지 쿼리를
처리하며, Slave는 참조 쿼리만을 처
리 합니다.
▸INSERT, UPDATE 보다 SELECT가
많은 서비스에 많이 사용되며 가장
일반적인 방식 입니다.
▸데이터 이중화 효과와 함께 부하분산
효과도 가지고 있습니다.
Master Slave Slave
Web Server
2018.02.28 OPEN LAB
MASTER & SLAVE REPLICATION 순서도.
데이터 갱신 요청
Master
DB
갱신 쿼리 수행
바이너리 로
그
Master의 쓰레드가 갱신
쿼리를 바이너리 로그에
쓴다.
Slave
Slave의 I/O 쓰레드가
바이너리 로그를 읽어 온
다.
릴레이 로그Slave의 I/O 쓰레드가
읽어온 바이너리 로그를
릴레이 로그에 작성한다.
DB
Slave의 SQL쓰레
드가 릴레이 로그
에 기록된 명령문
을 수행해서 동기
화 한다.
2018.02.28 OPEN LAB
DUAL MASTER REPLICATION
▸갱신/참조 두가지 기능을 처리하는
서버를 이중화 하는 방법입니다.
▸갱신과 참조 명령문 모두를 분산해서
처리한다.
▸INSERT, UPDATE, SELECT 명령문
이 모두 비슷하게 사용되는 서비스 적
합합니다.
▸데이터 이중화 효과와 함께 부하분산
효과도 가지고 있습니다.
Master Master
Web Server
VIP
2018.02.28 OPEN LAB
DUAL MASTER REPLICATION 순서도.
▸Master & Slave Replication 과 기본적으로 같은 순서로 진행
된다.
▸각자가 Master 이면서 Slave가 되는 형태이다.
요청 처리 요청 처리
바이너리 로그 바이너리 로그
릴레이 로그 릴레이 로그
Master A Master B
DB DB
2018.02.28 OPEN LAB
DUAL MASTER & SLAVE REPLICATION
▸단일 Master 서버의 단점을 보완한
형태이다. Master 서버를 이중화 구
성한 뒤, 각각의 Master 서버를 다시
Active-Passive형태로 구성한다.
▸Active 서버 장애시 Passive 서버가
서비스를 지속 하는 형태이다.
▸마찬가지로 데이터 이중화 효과를
가지며 부하 분산 효과, 서비스 지속
성 향상의 특징을 가지고 있다.
Master(Active) Master(Passive)
Web Server
Slave
Slave
2018.02.28 OPEN LAB
DUAL MASTER & SLAVE REPLICATION
▸앞에서 설명한 것과 달리 반동기 복제( Master 에서 모든 바
이너리 로그가 Slave로 전달 되었는지 확인하는 기능) 를 사
용한다. MySQL 5.5 부터 포함.
Master(Active) Master(Passive)
SlaveSlave Slave
데이터 갱신 요청
바이너리 로그 기록
반동기 복제
비동기 복제
2018.02.28 OPEN LAB
SHARDING & HORIZONTAL
PARTITIONING (1)
▸샤딩은 데이터를 분산 또는 분할 처리하는 기법중 하나로 수평
분할 이라고도 불리기도 한다.
▸수평 분할은 하나의 테이블을 row를 기준으로 반은 A테이블에
, 나머지 반은 B테이블에 저장하여 이를 나눠서 처리하는 것을
말한다. 샤딩은 물리적으로 다른 DB에 Row를 기반으로 나눠
서 처리하는 것을 말한다.
▸위와 같은 데이터를 범위, 또는 특정 Row를 기준으로 나누어서
소로 다른 DB에 저장하여서 쓴다는 것이다.

More Related Content

What's hot

AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTI Goo Lee
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개주표 홍
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 
04.웹시스템 이해 하기
04.웹시스템 이해 하기04.웹시스템 이해 하기
04.웹시스템 이해 하기Opennaru, inc.
 
How to use apache spark (based on the java example)
How to use apache spark (based on the java example)How to use apache spark (based on the java example)
How to use apache spark (based on the java example)월간 IT 슬라이드
 
Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2창훈 정
 
무정지 웹서비스
무정지 웹서비스무정지 웹서비스
무정지 웹서비스영진 채
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsSungMin OH
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
Tungsten 을활용한 MySQL / Hadoop 동기화
Tungsten 을활용한 MySQL / Hadoop 동기화Tungsten 을활용한 MySQL / Hadoop 동기화
Tungsten 을활용한 MySQL / Hadoop 동기화I Goo Lee
 
Resource Governor in sql server 2008
Resource Governor in sql server 2008Resource Governor in sql server 2008
Resource Governor in sql server 2008Bora Choi
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치choi sungwook
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)DK Lee
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?Opennaru, inc.
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12HoJin Ha
 
Redis Overview
Redis OverviewRedis Overview
Redis Overviewkalzas
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조Choonghyun Yang
 
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안Opennaru, inc.
 
Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅J.H Ahn
 

What's hot (20)

AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
04.웹시스템 이해 하기
04.웹시스템 이해 하기04.웹시스템 이해 하기
04.웹시스템 이해 하기
 
How to use apache spark (based on the java example)
How to use apache spark (based on the java example)How to use apache spark (based on the java example)
How to use apache spark (based on the java example)
 
Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2
 
무정지 웹서비스
무정지 웹서비스무정지 웹서비스
무정지 웹서비스
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloops
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
Tungsten 을활용한 MySQL / Hadoop 동기화
Tungsten 을활용한 MySQL / Hadoop 동기화Tungsten 을활용한 MySQL / Hadoop 동기화
Tungsten 을활용한 MySQL / Hadoop 동기화
 
Resource Governor in sql server 2008
Resource Governor in sql server 2008Resource Governor in sql server 2008
Resource Governor in sql server 2008
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
 
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
200.마이크로서비스에 적합한 오픈소스 WAS는 무엇?
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조
 
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
Final 07.컨테이너 환경에서 모니터링 이슈와 해결 방안
 
Flux 예제 분석 2
Flux 예제 분석 2Flux 예제 분석 2
Flux 예제 분석 2
 
Spring@mvc웹호스팅
Spring@mvc웹호스팅Spring@mvc웹호스팅
Spring@mvc웹호스팅
 

Similar to Mysql replication

개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축정해 이
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천탑크리에듀(구로디지털단지역3번출구 2분거리)
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기NHN FORWARD
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancementsbeamofhope
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유Kyoungchan Lee
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Sanghee Lee
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQLrockplace
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성Ji-Woong Choi
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAmazon Web Services Korea
 
DB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLDB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLrockplace
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQLrockplace
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2xyzlee
 
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016Amazon Web Services Korea
 
Amazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Web Services Korea
 

Similar to Mysql replication (20)

개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축
 
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
#2.SQL초보에서 Schema Objects까지_재직자/근로자환급/국비지원교육/IT실무교육/SQL기초교육/구로IT학원추천
 
Oracle History #7
Oracle History #7Oracle History #7
Oracle History #7
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성[오픈소스컨설팅]초간단 Cubrid HA구성
[오픈소스컨설팅]초간단 Cubrid HA구성
 
AWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep DiveAWS 9월 웨비나 | Amazon Aurora Deep Dive
AWS 9월 웨비나 | Amazon Aurora Deep Dive
 
steeleye Replication
steeleye Replication steeleye Replication
steeleye Replication
 
DB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLDB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQL
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQL
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2
 
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
관계형 데이터베이스의 새로운 패러다임 Amazon Aurora :: 김상필 :: AWS Summit Seoul 2016
 
Amazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB DayAmazon Aurora Deep Dive (김기완) - AWS DB Day
Amazon Aurora Deep Dive (김기완) - AWS DB Day
 

Mysql replication

  • 2. 2018.02.28 OPEN LAB 목차 ▸ DB서버 이중화를 안했을 경우 ▸ DB서버 이중화. ▸ Replication..? ▸ Replication의 원리. ▸ 구성 방법 ▸ Master & Slave Replication ▸ Dual Master Replication ▸ Dual Master & Slave Replication ▸ SHADING & Horizontal Partitioning
  • 3. 2018.02.28 OPEN LAB 이중화를 안했을 경우.... ▸만약 VideoTag 서비스가 DB서버를 한개만 쓰고 있다고 가정 해 봅시다. 그런데 갑자기 DB서버가 프로세스가 멈추거나 고 장이 났다면..? ▸프로세스가 죽었으면 이는 불행 중 다행이다. 프로세스가 죽 었을 동안 이용은 못하지만 프로세스만 다시 살리면 어느정도 복구는 가능하다. ▸하지만 DB서버가 물리적으로 고장 났다고 생각해보자. 고치 는 것도 어려울 뿐더러 시간도 오래 걸린다. ▸위와 같은 상황을 대비하기 위해, 그리고 효율성을 높이기 위 해 이중화는 필요하다. 그렇다면 어떻게 진행 해야 하는것일 까...?
  • 4. 2018.02.28 OPEN LAB DB 서버 이중화 ▸그렇다면 이중화는 어떻게 진행 해야 할까..? ▸간단하다. 웹 서버를 이중화 하는 것처럼 DB 서버도 여러개를 두면 된다. ▸다만.. DB서버를 여러개를 만드는 것은 어렵지 않다. 하지만 DB에 서 가장 중요한것은 바로 데이터이다. 데이터를 어떻게 동기화 시 키느냐가 DB 서버 이중화의 핵심 포인트이다. 그렇다면 어떤 방법 이 있을까..?
  • 5. 2018.02.28 OPEN LAB REPLICAION,,,? ▸응답, 뒤로 젖혀짐, 사본, 복제 라는 뜻을 가지고 있다. ▸일반적으로 Computer Engineering에서 리플리케이션은 데이 터를 실시간으로 복제하는 것을 말한다. ▸즉, 데이터 백업을 물리적으로 다른 서버에 실시간으로 한다 는 것을 말한다. ▸MySQL 3.23.15 부터 지원, 3.23.31부터 안정화 되었다.
  • 6. 2018.02.28 OPEN LAB REPLICATION의 종류 ▸Replication를 이용한 구현은 대표적으로 아래 3가지가 있다. ▸Master & Slave Replication ▸Dual-Master Replication ▸Dual-Master & Slave Replication ▸여기서 Master는 데이터의 갱신/참조 두가지 종류의 쿼리 모 두를 받아 들이는 서버를 말하며, Slave는 참조 쿼리만 받아 들이는 서버를 말한다.
  • 7. 2018.02.28 OPEN LAB REPLICATION의 원리[1] - 3개의 쓰레드. ▸Replication은 3개의 쓰레드를 사용해서 구현된다. Master에서 생성 되는 쓰레드 1개와 Slave에서 생성되는 2개의 쓰레드(I/O 쓰레드, SQL 쓰레드) 이다. ▸우선 START SLAVE 라는 명령어로 Slave는 I/0쓰레드가 생성되고 이 I/O 쓰레드는 Master 로부터 바이너리 로그 파일을 요청 한다. 그러면 Master는 쓰레드를 하나 생성해서 바이너리 로그 파일을 Slave로 전 달하고, I/O 쓰레드가 해당 내용을 받아서 릴레이 로그를 생성한다. 그 러면 Slave의 SQL 쓰레드는 릴레이 로그를 읽어서 로그 안에 있는 명 령문을 Slave에서 실행시켜 데이터를 동기화 한다. ▸하나의 Master는 접속된 Slave 별로 하나의 쓰레드를 생성하고, 각 Slave는 자신만의 I/O 쓰레드와 SQL 쓰레드를 가진다.
  • 8. 2018.02.28 OPEN LAB REPLICATION의 원리[2] - 바이너리 로그 ▸바이너리 로그에는 데이터를 지금 또는 나중에 업데이트 하는 모든 명령문이 이벤트 형태로 저장된 로그 파일이다. ▸SELECT, SHOW와 같은 참조 명령문은 기록되지 않으며 각 명령문 이 데이터를 업데이트하는 소비 시간 정보를 가지고 있다. ▸바이너리 로그의 목적은 DB 장애 발생시 데이터를 복구하거나, Replication 구성시 Slave로 보내져야 하는 명령문을 기록하기 위해서 이다 ▸보통 host_name.nnnnnn 과 같이 생성 되며 재시작 될때만다 로그 파 일이 1씩 증가 된다. ▸SHOW binary logs; 명령어로 생성된 로그를 확인 할 수 있다.
  • 9. 2018.02.28 OPEN LAB REPLICATION의 원리[3] - 릴레이 로그 ▸릴레이 로그는 Slave 에서 생성되는 로그 파일이다. Slave의 I/O쓰 레드가 Master로부터 갱신 로그를 수신해서 슬레이브 측에 저장한 로그 입니다. ▸이 갱신 로그를 Slave의 SQL쓰레드가 모두 처리해서 Master와 Slave의 동기화를 진행 합니다. ▸또한 Master에서 생성된 바이너리 로그와 포맷 형식이 같으나, 바 이너리 로그와는 달리 SQL 쓰레드가 모든 이벤트를 처리하면 해당 로그파일을 삭제 합니다. ▸데이터 복제를 위해서 Slave는 릴레이 로그에서 어디까지 처리 되 었는지를 알아야 하는데 이 정보를 포지션 정보라고 한다.
  • 10. 2018.02.28 OPEN LAB REPLICATION의 원리[4] - 포지션 정보 ▸Slave는 리플리케이션을 완료한 위치정보를 알고 있습니다. 그러므로 Slave를 재부팅 한다던가 종료 되었을때 다시 재가 동 된다 하더라도 Slave는 종료한 시점부터 다시 데이터를 복 제합니다. ▸이렇게 Master의 Host 정보, 로그 파일명, 로그 파일내에서 처리한 포인트 정보를 포지션 정보라고 합니다. ▸이 정보는 SHOW SLAVE STATUS 라는 SQL로 확인 가능하 다.
  • 11. 2018.02.28 OPEN LAB REPLICATION의 원리[5] -비동기 데이터 복사 ▸Replication은 로그를 기반으로 데이터를 복제 합니다. 즉 Master에서 수행한 갱신 처리가 동시에 Slave로 반영 되는 것 이 아니라, 시간차가 어느정도 존재 한다는 것입니다. 그래서 이를 비동기 데이터 복사 라고 합니다. ▸Replication 방식이 아닌 Cluster 방식의 이중화를 사용할 경 우 동기 복사 또는 반동기 복사를 사용하기도 합니다. ( EX: Galera Cluster )
  • 12. 2018.02.28 OPEN LAB MASTER & SLAVE REPLICATION ▸Master는 갱신과 참조 두가지 쿼리를 처리하며, Slave는 참조 쿼리만을 처 리 합니다. ▸INSERT, UPDATE 보다 SELECT가 많은 서비스에 많이 사용되며 가장 일반적인 방식 입니다. ▸데이터 이중화 효과와 함께 부하분산 효과도 가지고 있습니다. Master Slave Slave Web Server
  • 13. 2018.02.28 OPEN LAB MASTER & SLAVE REPLICATION 순서도. 데이터 갱신 요청 Master DB 갱신 쿼리 수행 바이너리 로 그 Master의 쓰레드가 갱신 쿼리를 바이너리 로그에 쓴다. Slave Slave의 I/O 쓰레드가 바이너리 로그를 읽어 온 다. 릴레이 로그Slave의 I/O 쓰레드가 읽어온 바이너리 로그를 릴레이 로그에 작성한다. DB Slave의 SQL쓰레 드가 릴레이 로그 에 기록된 명령문 을 수행해서 동기 화 한다.
  • 14. 2018.02.28 OPEN LAB DUAL MASTER REPLICATION ▸갱신/참조 두가지 기능을 처리하는 서버를 이중화 하는 방법입니다. ▸갱신과 참조 명령문 모두를 분산해서 처리한다. ▸INSERT, UPDATE, SELECT 명령문 이 모두 비슷하게 사용되는 서비스 적 합합니다. ▸데이터 이중화 효과와 함께 부하분산 효과도 가지고 있습니다. Master Master Web Server VIP
  • 15. 2018.02.28 OPEN LAB DUAL MASTER REPLICATION 순서도. ▸Master & Slave Replication 과 기본적으로 같은 순서로 진행 된다. ▸각자가 Master 이면서 Slave가 되는 형태이다. 요청 처리 요청 처리 바이너리 로그 바이너리 로그 릴레이 로그 릴레이 로그 Master A Master B DB DB
  • 16. 2018.02.28 OPEN LAB DUAL MASTER & SLAVE REPLICATION ▸단일 Master 서버의 단점을 보완한 형태이다. Master 서버를 이중화 구 성한 뒤, 각각의 Master 서버를 다시 Active-Passive형태로 구성한다. ▸Active 서버 장애시 Passive 서버가 서비스를 지속 하는 형태이다. ▸마찬가지로 데이터 이중화 효과를 가지며 부하 분산 효과, 서비스 지속 성 향상의 특징을 가지고 있다. Master(Active) Master(Passive) Web Server Slave Slave
  • 17. 2018.02.28 OPEN LAB DUAL MASTER & SLAVE REPLICATION ▸앞에서 설명한 것과 달리 반동기 복제( Master 에서 모든 바 이너리 로그가 Slave로 전달 되었는지 확인하는 기능) 를 사 용한다. MySQL 5.5 부터 포함. Master(Active) Master(Passive) SlaveSlave Slave 데이터 갱신 요청 바이너리 로그 기록 반동기 복제 비동기 복제
  • 18. 2018.02.28 OPEN LAB SHARDING & HORIZONTAL PARTITIONING (1) ▸샤딩은 데이터를 분산 또는 분할 처리하는 기법중 하나로 수평 분할 이라고도 불리기도 한다. ▸수평 분할은 하나의 테이블을 row를 기준으로 반은 A테이블에 , 나머지 반은 B테이블에 저장하여 이를 나눠서 처리하는 것을 말한다. 샤딩은 물리적으로 다른 DB에 Row를 기반으로 나눠 서 처리하는 것을 말한다. ▸위와 같은 데이터를 범위, 또는 특정 Row를 기준으로 나누어서 소로 다른 DB에 저장하여서 쓴다는 것이다.