SlideShare a Scribd company logo
MySQL Fabric 운영 유의사항
2015.03
MySQL Power Group
전세웅
MySQL Fabric 운영 유의사항
MySQL Fabric 개요
2 / 14
x86 H/W
성능과 용량
확장 한계
(scale up)
x86 H/W의
안정성
HA + 자동화
Sharding
(데이터분산)
MySQL Fabric
- Master/Slave 자동 Failover
- 부하 분산
- 데이터 분산 저장
MySQL Fabric 운영 유의사항
MySQL Fabric 개요
3 / 14
Master
Master
Slave
Slave
Slave
Slave
Master Slave
HA Group ID : SHARD1 HA Group ID : SHARD2
HA Group ID : GLOBAL
Replication
MySQL 노드 상태 질의
(Query Routing 정보)
MySQL 노드 상태 및
Master/Slave Role 변경
전파
MySQL 노드 상태 체크
장애 노드 제거
SHARD1 / MODE_READWRITE SHARD2 / MODE_READONLY
MySQL Fabric 운영 유의사항
MySQL Fabric 도입 유의사항
4 / 14
SPOF (Single Point of Failure) 존재
: Fabric 노드(Fabric Controller) 장애 시 신규 접속 불가하며, 이중화 방안이 제공되지 않음
기존 접속 세션 역시, MySQL 서버 상태 정보 cache 만료 이후 장애 상태로 진입
Shard 관련 Maintenance 작업 시 서비스 영속성 확보 불가
: Shard 분할/이전 등의 작업 시 서비스 중단 필요 (Fabric 전체 접근 불가)
Global HA 그룹의 활용 가치가 떨어짐
: Cluster 유지를 위해 가용성 확보는 필요한 반면, 활용 가치는 크지 않음
기타 제약 조건
• Fabric 전용 Connector 필요
: 1.5.3 버전 기준 Python, Java 만 지원되며, 기존 개발된 code의 재사용이 어려울 수 있음
• Cross-Shard Join 및 Cross-Shard Transaction 불가
• GTID Replication 사용으로 인한 추가 제약사항
: CTAS (Create Table … Select) 구문 사용 및 트랜잭션 내에서 Temporary Table 생성 불가
트랜잭션 미지원 엔진(MyISAM)과 트랜잭션 지원 엔진(Update) 간 Join Update/Delete 불가
log-slave-updates 옵션 사용으로 인한 Disk 공간 점유 (Slave에도 Binary Log가 동일하게 생성)
MySQL Fabric 운영 유의사항
MySQL Fabric 도입 유의사항
5 / 14
1. HA 와 Sharding을 모두 지원하는 솔루션이 필요한가?
2. 미션 critical 하지 않은 서비스인가?
3. 서비스 downtime 확보가 용이한가?
 상용 서비스에 Fabric 도입은 지양하는 것을 권장 (1.5.3 버전 기준)
HA 기능 대체 솔루션 : MHA, MMM …
Sharding 기능 대체 솔루션 : Spider Storage Engine, In-House 개발
HA + Sharding 기능 제공 솔루션 : MySQL Cluster
①
②
③
YES
YES
NO
YES
NO
NO
MySQL Fabric 운영 유의사항
MySQL Fabric 시스템 설계
6 / 14
1) Fabric 노드(fabric controller) 이중화 구성
: Fabric 노드에 대한 이중화는 공식적으로 지원되지 않지만, 비공식적인 방법으로 이중화 구성 가능
단, 별도의 angel 데몬 개발 필요 (VIP 생성 시 Fabric 데몬 startup, VIP 제거 시 Fabric 데몬 down)
Backing Store
Fabric node 1
Backing Store
Fabric node 2
VIP
Replication
SHARD1 SHARD2GLOBAL
[protocol.xmlrpc]
disable_authentication = no
ssl_cert =
realm = MySQL Fabric
ssl_key =
ssl_ca =
threads = 5
user = admin
address = virtual ip address:32274
password = adminpw
[protocol.mysql]
disable_authentication = no
ssl_cert =
ssl_key =
ssl_ca =
user = admin
address = virtual ip address:32275
password =
MySQL Fabric 운영 유의사항
MySQL Fabric 시스템 설계
7 / 14
2) Shard 분할 최대치 예측 및 다중 MySQL 인스턴스 구성
: 서비스 운영중 Shard 분할 등의 작업이 발생하지 않도록 대비
필요한 최대 Shard 개수를 예측한 후 미리 Shard 개수를 고정 (일반적으로 최대 8~16 Shard)
성능 확장이 필요한 경우 기 운영중인 MySQL 인스턴스를 신규 서버로 이전 (sharding move_shard 커맨드 사용x)
3306 3306
Host A Host B
SHARD1
3307
3306 3306
Host C Host D
SHARD2
3306 3306
Host A Host B
3306 3306
Host C Host D
3307 3307 3307
SHARD1 SHARD2
SHARD3 SHARD4
3309 3309 3309 3309SHARD7 SHARD8
〯 〯 〯 〯
MySQL Fabric 운영 유의사항
MySQL Fabric 시스템 설계
8 / 14
3307
3306 3306
Host A Host B
3306 3306
Host C Host D
3307 3307 3307
SHARD1 SHARD2
SHARD3 SHARD4
3309 3309 3309 3309 SHARD8
〯 〯 〯 〯
Host E Host F
3306 3306
SHARD7
① mysqlfabric group add SHARD7 HostE:3306
// HostF:3306 인스턴스도 SHARD7 그룹에 추가
② mysqlfabric group promote SHARD7
--slave_id=${HostE:3306’s uuid}
③ mysqlfabric server set_status ${HostA:3309’s uuid} SPARE
④ mysqlfabric group remove SHARD7 ${HostA:3309’s uuid}
// HostB:3309 인스턴스도 비활성 후 SHARD7 그룹에서 제거
MySQL Fabric 운영 유의사항
MySQL Fabric 시스템 설계
9 / 14
3) GLOBAL HA GROUP 구성
• GLOBAL HA GROUP의 역할
: 모든 Shard(HA Group)의 상위 Master DB로 동작하며, 전체 MySQL 인스턴스에 변경 전파 역할 수행
(DDL, Grant … )
: 전체 Shard(HA Group)에 동일하게 저장되어야 되는 Global Table 데이터 관리
• GLOBAL HA GROUP 이중화
: Global Data를 제외하면, GLOBAL HA Group의 MySQL 인스턴스는 전체 시스템의 스키마 정보만 가지며,
트래픽 인입 없음
: 하지만 GLOBAL HA Group에 유효한 인스턴스가 1개라도 존재하지 않게 되면 전체 Fabric 접근 차단
• GLOBAL HA GROUP 용도의 별도 H/W 구축 재고
: Fabric Control 노드 이중화 후 Control 노드와 Global HA Group의 H/W Consolidation 검토 가능
※ GLOBAL HA GROUP 운영 유의사항
: 전체 MySQL 인스턴스에 변경 내용이 전파되므로 변경 작업 시 유의 필요
ex) GLOBAL HA Group 내에서 Backup & Restore 수행  전체 Shard 데이터 초기화
MySQL Fabric 운영 유의사항
MySQL Fabric 시스템 설계
10 / 14
Backing Store
Fabric node 1
Backing Store
Fabric node 2
VIP
Replication
GLOBAL
3307
3306 3306
Host A Host B
3306 3306
Host C Host D
3307 3307 3307
SHARD1 SHARD2
SHARD3 SHARD4
3309 3309 3309 3309SHARD7 SHARD8
〯 〯 〯 〯
감사합니다.

More Related Content

What's hot

MySQL GTID 시작하기
MySQL GTID 시작하기MySQL GTID 시작하기
MySQL GTID 시작하기
I Goo Lee
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
NeoClova
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
I Goo Lee
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례
I Goo Lee
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
NeoClova
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
I Goo Lee
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
NeoClova
 
AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론
I Goo Lee
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
Ji-Woong Choi
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치Young D
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
NeoClova
 
개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축
정해 이
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
JongJin Lee
 
From MSSQL to MariaDB
From MSSQL to MariaDBFrom MSSQL to MariaDB
From MSSQL to MariaDB
I Goo Lee
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
Ji-Woong Choi
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개
NeoClova
 
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
I Goo Lee
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
NeoClova
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
NeoClova
 

What's hot (20)

MySQL GTID 시작하기
MySQL GTID 시작하기MySQL GTID 시작하기
MySQL GTID 시작하기
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
Federated Engine 실무적용사례
Federated Engine 실무적용사례Federated Engine 실무적용사례
Federated Engine 실무적용사례
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 
AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론AWS 환경에서 MySQL Infra 설계하기-2부.본론
AWS 환경에서 MySQL Infra 설계하기-2부.본론
 
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
[오픈소스컨설팅]Nginx 1.2.7 설치가이드__v1
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
 
개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축개발자가 도전하는 MariaDB 서버구축
개발자가 도전하는 MariaDB 서버구축
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
 
From MSSQL to MariaDB
From MSSQL to MariaDBFrom MSSQL to MariaDB
From MSSQL to MariaDB
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개
 
주키퍼
주키퍼주키퍼
주키퍼
 
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개MS 빅데이터 서비스 및 게임사 PoC 사례 소개
MS 빅데이터 서비스 및 게임사 PoC 사례 소개
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
 

Similar to MySQL_Fabric_운영시유의사항

MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개
rockplace
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
NeoClova
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
2node cluster
2node cluster2node cluster
2node clustersprdd
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
Kyungsuk Song
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
흥배 최
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
rockplace
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
Dong-Hwa jung
 
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
rockplace
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQL
rockplace
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0sprdd
 
Pgday bdr 천정대
Pgday bdr 천정대Pgday bdr 천정대
Pgday bdr 천정대
PgDay.Seoul
 
Pgday bdr gt1000
Pgday bdr gt1000Pgday bdr gt1000
Pgday bdr gt1000
정대 천
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
JaM2in
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
Sangmo Kim
 
MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11
NeoClova
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
NeoClova
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지
Kee Hoon Lee
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서Yong-uk Choe
 
[IBM Technical NewsLetter - 통합 6호]
[IBM Technical NewsLetter - 통합 6호] [IBM Technical NewsLetter - 통합 6호]
[IBM Technical NewsLetter - 통합 6호]
HyunHwa Myoung
 

Similar to MySQL_Fabric_운영시유의사항 (20)

MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개
 
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docxKeepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
Keepalived+MaxScale+MariaDB_운영매뉴얼_1.0.docx
 
2node cluster
2node cluster2node cluster
2node cluster
 
2node cluster
2node cluster2node cluster
2node cluster
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
 
Osc4.x installation v1-upload
Osc4.x installation v1-uploadOsc4.x installation v1-upload
Osc4.x installation v1-upload
 
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
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
Pgday bdr 천정대
Pgday bdr 천정대Pgday bdr 천정대
Pgday bdr 천정대
 
Pgday bdr gt1000
Pgday bdr gt1000Pgday bdr gt1000
Pgday bdr gt1000
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
 
MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11MaxScale이해와활용-2023.11
MaxScale이해와활용-2023.11
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
 
[IBM Technical NewsLetter - 통합 6호]
[IBM Technical NewsLetter - 통합 6호] [IBM Technical NewsLetter - 통합 6호]
[IBM Technical NewsLetter - 통합 6호]
 

More from I Goo Lee

AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기
I Goo Lee
 
Backup automation in KAKAO
Backup automation in KAKAO Backup automation in KAKAO
Backup automation in KAKAO
I Goo Lee
 
MySQL 5.7 NF – Optimizer Improvement
 MySQL 5.7 NF – Optimizer Improvement MySQL 5.7 NF – Optimizer Improvement
MySQL 5.7 NF – Optimizer Improvement
I Goo Lee
 
MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용
I Goo Lee
 
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
I Goo Lee
 
AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론
I Goo Lee
 
AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분
I Goo Lee
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
I Goo Lee
 
MySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELKMySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELK
I Goo Lee
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기
I Goo Lee
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례
I Goo Lee
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQL
I Goo Lee
 
1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례
I Goo Lee
 
.NET Webservice for MySQL
.NET Webservice for MySQL.NET Webservice for MySQL
.NET Webservice for MySQL
I Goo Lee
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
I Goo Lee
 
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
I Goo Lee
 
JSON 데이터를 DB에 넣고 사용하고 싶다
JSON 데이터를 DB에 넣고 사용하고 싶다JSON 데이터를 DB에 넣고 사용하고 싶다
JSON 데이터를 DB에 넣고 사용하고 싶다
I Goo Lee
 
rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화
I Goo Lee
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
I Goo Lee
 
Introduction to MariaDB MaxScale
Introduction to MariaDB MaxScaleIntroduction to MariaDB MaxScale
Introduction to MariaDB MaxScale
I Goo Lee
 

More from I Goo Lee (20)

AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기AWS Aurora 100% 활용하기
AWS Aurora 100% 활용하기
 
Backup automation in KAKAO
Backup automation in KAKAO Backup automation in KAKAO
Backup automation in KAKAO
 
MySQL 5.7 NF – Optimizer Improvement
 MySQL 5.7 NF – Optimizer Improvement MySQL 5.7 NF – Optimizer Improvement
MySQL 5.7 NF – Optimizer Improvement
 
MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용MySQL 5.7 NF – JSON Datatype 활용
MySQL 5.7 NF – JSON Datatype 활용
 
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
Intro KaKao MRTE (MySQL Realtime Traffic Emulator)
 
AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론AWS 환경에서 MySQL Infra 설계하기-2본론
AWS 환경에서 MySQL Infra 설계하기-2본론
 
AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분AWS 환경에서 MySQL Infra 설계하기-1도입부분
AWS 환경에서 MySQL Infra 설계하기-1도입부분
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
MySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELKMySQL Audit using Percona audit plugin and ELK
MySQL Audit using Percona audit plugin and ELK
 
PostgreSQL 이야기
PostgreSQL 이야기PostgreSQL 이야기
PostgreSQL 이야기
 
Binlog Servers 구축사례
Binlog Servers 구축사례Binlog Servers 구축사례
Binlog Servers 구축사례
 
Intro ProxySQL
Intro ProxySQLIntro ProxySQL
Intro ProxySQL
 
1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례1.mysql disk io 모니터링 및 분석사례
1.mysql disk io 모니터링 및 분석사례
 
.NET Webservice for MySQL
.NET Webservice for MySQL.NET Webservice for MySQL
.NET Webservice for MySQL
 
Fluentd with MySQL
Fluentd with MySQLFluentd with MySQL
Fluentd with MySQL
 
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
백업인프라 개선 (w/님블스토리지) - 1TB 를 10분 내에
 
JSON 데이터를 DB에 넣고 사용하고 싶다
JSON 데이터를 DB에 넣고 사용하고 싶다JSON 데이터를 DB에 넣고 사용하고 싶다
JSON 데이터를 DB에 넣고 사용하고 싶다
 
rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화rpm package 를 이용한 MySQL 설치자동화
rpm package 를 이용한 MySQL 설치자동화
 
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
오픈소스로 만드는 DB 모니터링 시스템 (w/graphite+grafana)
 
Introduction to MariaDB MaxScale
Introduction to MariaDB MaxScaleIntroduction to MariaDB MaxScale
Introduction to MariaDB MaxScale
 

MySQL_Fabric_운영시유의사항

  • 1. MySQL Fabric 운영 유의사항 2015.03 MySQL Power Group 전세웅
  • 2. MySQL Fabric 운영 유의사항 MySQL Fabric 개요 2 / 14 x86 H/W 성능과 용량 확장 한계 (scale up) x86 H/W의 안정성 HA + 자동화 Sharding (데이터분산) MySQL Fabric - Master/Slave 자동 Failover - 부하 분산 - 데이터 분산 저장
  • 3. MySQL Fabric 운영 유의사항 MySQL Fabric 개요 3 / 14 Master Master Slave Slave Slave Slave Master Slave HA Group ID : SHARD1 HA Group ID : SHARD2 HA Group ID : GLOBAL Replication MySQL 노드 상태 질의 (Query Routing 정보) MySQL 노드 상태 및 Master/Slave Role 변경 전파 MySQL 노드 상태 체크 장애 노드 제거 SHARD1 / MODE_READWRITE SHARD2 / MODE_READONLY
  • 4. MySQL Fabric 운영 유의사항 MySQL Fabric 도입 유의사항 4 / 14 SPOF (Single Point of Failure) 존재 : Fabric 노드(Fabric Controller) 장애 시 신규 접속 불가하며, 이중화 방안이 제공되지 않음 기존 접속 세션 역시, MySQL 서버 상태 정보 cache 만료 이후 장애 상태로 진입 Shard 관련 Maintenance 작업 시 서비스 영속성 확보 불가 : Shard 분할/이전 등의 작업 시 서비스 중단 필요 (Fabric 전체 접근 불가) Global HA 그룹의 활용 가치가 떨어짐 : Cluster 유지를 위해 가용성 확보는 필요한 반면, 활용 가치는 크지 않음 기타 제약 조건 • Fabric 전용 Connector 필요 : 1.5.3 버전 기준 Python, Java 만 지원되며, 기존 개발된 code의 재사용이 어려울 수 있음 • Cross-Shard Join 및 Cross-Shard Transaction 불가 • GTID Replication 사용으로 인한 추가 제약사항 : CTAS (Create Table … Select) 구문 사용 및 트랜잭션 내에서 Temporary Table 생성 불가 트랜잭션 미지원 엔진(MyISAM)과 트랜잭션 지원 엔진(Update) 간 Join Update/Delete 불가 log-slave-updates 옵션 사용으로 인한 Disk 공간 점유 (Slave에도 Binary Log가 동일하게 생성)
  • 5. MySQL Fabric 운영 유의사항 MySQL Fabric 도입 유의사항 5 / 14 1. HA 와 Sharding을 모두 지원하는 솔루션이 필요한가? 2. 미션 critical 하지 않은 서비스인가? 3. 서비스 downtime 확보가 용이한가?  상용 서비스에 Fabric 도입은 지양하는 것을 권장 (1.5.3 버전 기준) HA 기능 대체 솔루션 : MHA, MMM … Sharding 기능 대체 솔루션 : Spider Storage Engine, In-House 개발 HA + Sharding 기능 제공 솔루션 : MySQL Cluster ① ② ③ YES YES NO YES NO NO
  • 6. MySQL Fabric 운영 유의사항 MySQL Fabric 시스템 설계 6 / 14 1) Fabric 노드(fabric controller) 이중화 구성 : Fabric 노드에 대한 이중화는 공식적으로 지원되지 않지만, 비공식적인 방법으로 이중화 구성 가능 단, 별도의 angel 데몬 개발 필요 (VIP 생성 시 Fabric 데몬 startup, VIP 제거 시 Fabric 데몬 down) Backing Store Fabric node 1 Backing Store Fabric node 2 VIP Replication SHARD1 SHARD2GLOBAL [protocol.xmlrpc] disable_authentication = no ssl_cert = realm = MySQL Fabric ssl_key = ssl_ca = threads = 5 user = admin address = virtual ip address:32274 password = adminpw [protocol.mysql] disable_authentication = no ssl_cert = ssl_key = ssl_ca = user = admin address = virtual ip address:32275 password =
  • 7. MySQL Fabric 운영 유의사항 MySQL Fabric 시스템 설계 7 / 14 2) Shard 분할 최대치 예측 및 다중 MySQL 인스턴스 구성 : 서비스 운영중 Shard 분할 등의 작업이 발생하지 않도록 대비 필요한 최대 Shard 개수를 예측한 후 미리 Shard 개수를 고정 (일반적으로 최대 8~16 Shard) 성능 확장이 필요한 경우 기 운영중인 MySQL 인스턴스를 신규 서버로 이전 (sharding move_shard 커맨드 사용x) 3306 3306 Host A Host B SHARD1 3307 3306 3306 Host C Host D SHARD2 3306 3306 Host A Host B 3306 3306 Host C Host D 3307 3307 3307 SHARD1 SHARD2 SHARD3 SHARD4 3309 3309 3309 3309SHARD7 SHARD8 〯 〯 〯 〯
  • 8. MySQL Fabric 운영 유의사항 MySQL Fabric 시스템 설계 8 / 14 3307 3306 3306 Host A Host B 3306 3306 Host C Host D 3307 3307 3307 SHARD1 SHARD2 SHARD3 SHARD4 3309 3309 3309 3309 SHARD8 〯 〯 〯 〯 Host E Host F 3306 3306 SHARD7 ① mysqlfabric group add SHARD7 HostE:3306 // HostF:3306 인스턴스도 SHARD7 그룹에 추가 ② mysqlfabric group promote SHARD7 --slave_id=${HostE:3306’s uuid} ③ mysqlfabric server set_status ${HostA:3309’s uuid} SPARE ④ mysqlfabric group remove SHARD7 ${HostA:3309’s uuid} // HostB:3309 인스턴스도 비활성 후 SHARD7 그룹에서 제거
  • 9. MySQL Fabric 운영 유의사항 MySQL Fabric 시스템 설계 9 / 14 3) GLOBAL HA GROUP 구성 • GLOBAL HA GROUP의 역할 : 모든 Shard(HA Group)의 상위 Master DB로 동작하며, 전체 MySQL 인스턴스에 변경 전파 역할 수행 (DDL, Grant … ) : 전체 Shard(HA Group)에 동일하게 저장되어야 되는 Global Table 데이터 관리 • GLOBAL HA GROUP 이중화 : Global Data를 제외하면, GLOBAL HA Group의 MySQL 인스턴스는 전체 시스템의 스키마 정보만 가지며, 트래픽 인입 없음 : 하지만 GLOBAL HA Group에 유효한 인스턴스가 1개라도 존재하지 않게 되면 전체 Fabric 접근 차단 • GLOBAL HA GROUP 용도의 별도 H/W 구축 재고 : Fabric Control 노드 이중화 후 Control 노드와 Global HA Group의 H/W Consolidation 검토 가능 ※ GLOBAL HA GROUP 운영 유의사항 : 전체 MySQL 인스턴스에 변경 내용이 전파되므로 변경 작업 시 유의 필요 ex) GLOBAL HA Group 내에서 Backup & Restore 수행  전체 Shard 데이터 초기화
  • 10. MySQL Fabric 운영 유의사항 MySQL Fabric 시스템 설계 10 / 14 Backing Store Fabric node 1 Backing Store Fabric node 2 VIP Replication GLOBAL 3307 3306 3306 Host A Host B 3306 3306 Host C Host D 3307 3307 3307 SHARD1 SHARD2 SHARD3 SHARD4 3309 3309 3309 3309SHARD7 SHARD8 〯 〯 〯 〯