5. ◆ 전세계에서 가장 많이 사용하는 대표적인 오픈소스 DBMS
◆ 듀얼 라이선스 (커뮤니티 버전, 상용 엔터프라이즈 버전)
◆ 플랫폼 독립성 : 다수의 OS에서 개발 및 구축할 수 있는 유연성
◆ SQL & NoSQL 액세스 : 복합 처리 및 단순한 고속 Key Value 작업 수행
◆ 빅 데이터 상호 운영성 : Hadoop 및 Cassandra를 위한 운영 데이터 저장소로서 MySQL 활용
MySQL 소개 MySQL 소개
1
6. MySQL HA 구성방안 MySQL 소개
1
구성 방법 HA 형태 특 징 서버 대수 참 고
MySQL
Replication
Master-Slave
구조(단방향) • 부하 분산 및 백업 용도
• 네트워크 전송
• BinLog 전송을 통해 동기화
• 비동기 방식
최소 서버 대수 2대 수동 Fail-over
Master-Master
구조(양방향)
OS Cluster 방식
Active-Standby
방식
• Shared Volume 구조
• Storage 또는 OS Cluster로 MySQL
이중화 구현
• Auto Failover
• 동기 방식
최소 서버 대수 2대
SAN 스토리지 같은
공유 스토리지 필요
MySQL InnoDB
Cluster
Active-Active
방식
• Shared Nothing 구조
• Master서버 장애 시 새로운 Master에
대한 정보를 Router 에서 업데이트해 서
부하를 자동으로 분산
• Auto Failover
• Group Replication, MySQL Shell,
MySQL Router 기반 동기 방식
최소 서버대수 3대
온라인 중
Scale out 지원
7. MySQL HA 구성방안 - Replication MySQL 소개
1
장 점
▪ SELECT Query를 Slave로 보내서 부하분산
가능
▪ Slave에서 백업을 수행하는 동안 Master
는 지속적인 서비스 가능
▪ Set-up 과정이 가장 단순하고 용이
단 점
▪ Async 방식으로 Master 와 Slave 간 데이터 차 발생 가능
▪ Master 장애발생시 기록한 binlog가 Slave로 복제되지
않을 수 있음. Slave가 Master로 승격된 경우, 데이터 손실이
발생할 수 있음
▪ 장애 발생 시 자동 Fail over 불가(수동 장애조치)
9. MySQL HA 구성방안 – OS Cluster MySQL 소개
1
장 점
▪ Active –Standby 구성으로 Heartbeat을 통해
Auto- failover 가능
▪ Active node의 장애 발생 시 Standby node가
Active 되어 서비스
▪ MySQL에서 제공되는 모든 Storage engine
사용 가능
단 점
▪ Failover를 위한 별도의 OS 클러스터 솔루션 필요
▪ Cluster의 node 중 둘 이상에 동시에 기동 될 수
없으며 반드시 하나에서만 Active 상태
▪ 장애 시 잠깐 동안의 Failover time 발생
11. Innodb Cluster 개요 InnoDB Cluster 소개
2
그림 - InnoDB Cluster Architecture
MySQL Database
Shared Nothing Cluster Solution
• Fault tolerance
• Auto Failover
• Active/Active 업데이트
(제한적으로 적용)
• 자동 멤버쉽 관리
- 멤버 추가 삭제
- 네트워크 파티션 및 장애
• 충돌 감지 및 해결
• 데이터 유실 방지
12. InnoDB Cluster 특징 InnoDB Cluster 소개
2
장 점
▪ Single Primary or Multi Primary의 다양한 방식의 이중화 구성 가
능
▪ Multi Primary 구성시 모든 노드에서 데이터 조회 및 변경 가능
▪ Monitoring 및 자동 Auto Failover기능 제공
▪ MySQL Router를 활용하여 R/W 부하 분산
▪ 한 노드 장애시에도 중단없이 서비스 가능(3노드 기준)
참 고
▪ 노드는 최소 3, 홀수로 증설 해야 하며 최대 9노드
▪ MySQL 5.7 미만 버전 에서 사용 불가
▪ InnoDB Storage Engine만 지원
▪ Write 가 적고 Read 가 많으면서 가용성이 중요한 경우 적합
▪ 성능은 single, replica 대비 낮으므로 사용자가 많은 서비스에는 부적합
▪ Cluster의 성능은 가장 낮은 성능의 노드에 의해 결정
13. Innodb Cluster 운영 방식 - Single primary InnoDB Cluster 소개
2
그림 - Single Primary 구성
Single Primary Mode
• Read/Write가 가능한 Primary 노드와 Read Only의 2개의 노드로 구성
• 서버 장애를 자동으로 감지
• 그룹 내에서 장애여부 판단 후 새로운 Primary 승격
14. Innodb Cluster 운영 방식 - Multi primary InnoDB Cluster 소개
2
그림 - Multi Primary 구성
Multi Primary Mode
• 모든 노드가 Primary 노드로 Read/Write가 가능
• 모든 노드에서 Write시 lock contention(Dead Lock) 발생 가능성 높음
• 모든 노드에 대한 엔진 버전이 동일 해야 함
15. Innodb Cluster 요구 사항 InnoDB Cluster 소개
2
Infrastructure Server Instance Configuration
• InnoDB 스토리지 엔진
• disabled_storage_engines
="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
• Primary Key 필수
• GTID 설정
• 네트워크 성능
• Binary log active
-- log-bin[=[log_file_name]
• Slave updates logged
-- log-slave-updates = on (v8.0.26 <)
-- log_replica_updates=on (v8.0.26 >)
• Binary log row format
-- binlog-format=row
• Global transaction identifiers enabled (on)
-- gtid-mode = on
-- enforce_gtid_consistency = on
• Replication information (metadata) repositories
-- master-info-repository=TABLE
-- relay-log-info-repository=TABLE
https://dev.mysql.com/doc/refman/8.0/en/group-replication-requirements.html
16. Agenda
MySQL 소개
1
4 InnoDB Cluster의 설정 및 동작방식
5 Demo : InnoDB Cluster 구축 및 변경
2 InnoDB Cluster 소개
3 InnoDB Cluster 구성
17. InnoDB Cluster 구성 - Group Replication InnoDB Cluster 구성
3
특 징
• 자동그룹 멤버쉽 관리 및 장애 감지
- 자동으로 서버 페일 오버
- 탄력성 있는 확장성
- 자동 복구
• 멀티 마스터 업데이트 지원
- 자동으로 데이터 충돌 발견 및 해결
- 데이터 일관성 보장
• 훌륭한 통합성 제공
- InnoDB 엔진
- GTID 기반 복제
- PERFORMANCE_SCHEMA
https://dev.mysql.com/doc/refman/8.0/en/group-replication.html
18. InnoDB Cluster 구성 - MySQL Shell InnoDB Cluster 구성
3
특 징
• JavaScript, Python 및SQL 지원
• 도큐먼트 스토어와 함께 관계형 모델 지원
(X 프로토콜 및 MySQL 프로토콜 지원)
• InnoDB Cluster 생성 및 관리 API 제공
• 운영에 필요한 여러가지 유틸리티 제공
https://dev.mysql.com/doc/mysql
shell/8.0/en/mysql shell utilities.html
• 명령어, 배치 스크립트 지원
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-features.html
19. InnoDB Cluster 구성 - MySQL Router InnoDB Cluster 구성
3
특 징
• 경량의 미들웨어
• 애플리케이션 연결 투명성 제공
• 로드 밸런싱 정책 기반으로 커넥션에 대한 자동
Failover를 관리
• R/W 포트 (6446, 64460) 로 Primary 멤버에 대한
자동 라우팅 (R/W, DML, Query)
• R/O 포트 (6447, 64470) 로 Secondary 멤버에 대
한 자동 라우팅 (R/O, Query only)
https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-innodb-
cluster.html
20. Agenda
MySQL 소개
1
5 Demo : InnoDB Cluster 구축 및 변경
2 InnoDB Cluster 소개
3 InnoDB Cluster 구성
4 InnoDB Cluster의 설정 및 동작방식
21. InnoDB Cluster 설정 InnoDB Cluster의 설정 및 동작방식
4
인스턴스 구성 사전 확인
mysql-js> dba.checkInstanceConfiguration('icadmin@ic-1:3306')
인스턴스 구성
mysql-js> dba.configureInstance('icadmin@ic-1:3306')
Innodb Cluster 생성
mysql-js> cluster = dba.createCluster('testCluster')
Innodb Cluster에 인스턴스 추가
mysql-js> cluster.addInstance('icadmin@ic-2:3306')
Router 배포
# ./mysqlrouter --bootstrap root@ic-1:3306 --user=mysql -d
/myrouter/routerconf
https://dev.mysql.com/doc/mysql-shell/8.0/en/deploying-production-innodb-cluster.html
22. MySQL 비동기식 복제(Async) InnoDB Cluster의 설정 및 동작방식
4
https://dev.mysql.com/doc/refman/8.0/en/group-replication-primary-secondary-replication.html
23. MySQL 반동기식 복제(Semi Sync) InnoDB Cluster의 설정 및 동작방식
4
https://dev.mysql.com/doc/refman/8.0/en/group-replication-primary-secondary-replication.html
24. MySQL Group Replication 복제방식 InnoDB Cluster의 설정 및 동작방식
4
https://dev.mysql.com/doc/refman/8.0/en/group-replication-summary.html
25. InnoDB Cluster Consistency - Eventual InnoDB Cluster의 설정 및 동작방식
4
https://dev.mysql.com/doc/refman/8.0/en/group-replication-options.html#sysvar_group_replication_consistency