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

PDF
Intro KaKao ADT (Almighty Data Transmitter)
PDF
MySQL 상태 메시지 분석 및 활용
PDF
MySQL Deep dive with FusionIO
PDF
Tungsten 을활용한 MySQL / Hadoop 동기화
PDF
MySQL/MariaDB Proxy Software Test
PDF
AWS 환경에서 MySQL BMT
PDF
[2018] MySQL 이중화 진화기
PDF
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
Intro KaKao ADT (Almighty Data Transmitter)
MySQL 상태 메시지 분석 및 활용
MySQL Deep dive with FusionIO
Tungsten 을활용한 MySQL / Hadoop 동기화
MySQL/MariaDB Proxy Software Test
AWS 환경에서 MySQL BMT
[2018] MySQL 이중화 진화기
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법

What's hot (20)

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

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

PDF
안정적인 서비스 운영 2013.08
PDF
Hadoop engineering v1.0 for dataconference.io
PDF
MySQL InnoDB Cluster 소개
PDF
안정적인 서비스 운영 2014.03
PPTX
Scalable web architecture and distributed systems
 
PPTX
Scalable web architecture and distributed systems
PDF
Elastic webservice
PPTX
Pivot3 overview
PPT
091106kofpublic 091108170852-phpapp02 (번역본)
PDF
[2B5]nBase-ARC Redis Cluster
PPTX
Pivot3 tech overview_201704
PDF
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
PPT
Redis Overview
PDF
log-monitoring-architecture.pdf
PDF
확장가능한 웹 아키텍쳐 구축 방안
PPTX
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
PDF
Scalable webservice
PPTX
분산저장시스템 개발에 대한 12가지 이야기
PPTX
[211] HBase 기반 검색 데이터 저장소 (공개용)
PDF
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
안정적인 서비스 운영 2013.08
Hadoop engineering v1.0 for dataconference.io
MySQL InnoDB Cluster 소개
안정적인 서비스 운영 2014.03
Scalable web architecture and distributed systems
 
Scalable web architecture and distributed systems
Elastic webservice
Pivot3 overview
091106kofpublic 091108170852-phpapp02 (번역본)
[2B5]nBase-ARC Redis Cluster
Pivot3 tech overview_201704
2014.4.30 프라이머 개발자 모임 - 서버 장애 예방 및 대응 방법 공유
Redis Overview
log-monitoring-architecture.pdf
확장가능한 웹 아키텍쳐 구축 방안
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
Scalable webservice
분산저장시스템 개발에 대한 12가지 이야기
[211] HBase 기반 검색 데이터 저장소 (공개용)
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
Ad

More from I Goo Lee (20)

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