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
〯 〯 〯 〯