제16장 고가용성 및 확장성(High Availability and Scalability)
목차
데이터는 오늘날의 Web, 모바일, 소셜 엔터프라이즈 및 클라우드 애플리케이션의 통화입니다. 데이터가 항상 사용할 수 있도록 보장하는 것은 어느 조직에서도 가장 우선 순위입니다. 분의 다운 타임으로도 수익 평가가 크게 손상 될 수 있습니다.
고 가용성 (HA)을 실현하기위한 "전능 한"방법은 없습니다. 특정 응용 프로그램 속성 비즈니스 요구 사항, 운영 성능 및 레거시 인프라는 모든 HA 기술의 선택에 영향을 미칠 수 있습니다. 그리고 HA를 실현하는데 기술은 하나의 요소에 불과합니다. 기술 자체만큼이나 사람과 프로세스가 중요합니다.
MySQL은 가용성과 확장 성을 요구하는 많은 애플리케이션에 배치되어 있습니다. 가용성은 호스트에서의 장애 (MySQL 운영 체제, 하드웨어, 유지 보수 작업에 장애를 포함한 조치를 취하지 않으면 다운 타임이 발생할 가능성이있다)에 대처하고, 필요한 경우 복구시키는 능력 것입니다. 확장 성 이란, 데이터베이스 및 응용 프로그램 쿼리의 부하를 모두 복수의 MySQL 서버에 분산시키는 능력입니다.
응용 프로그램마다 운영 및 가용성 요구 사항이 다르기 때문에 MySQL은 인증 및 지원되는 솔루션을 폭넓게 제공하고 서비스 수준 요구 사항을 충족 적절한 수준의 고 가용성 (HA)과 확장 성을 실현하고 있습니다. 이러한 솔루션은 복제에서, 가상화, 지리적 이중화, 99.999 %의 가동 시간을 실현하는 다중 데이터 센터 솔루션까지 제공하고 있습니다.
응용 프로그램에 대한 최적의 고 가용성 솔루션을 선택하는 것은 주로 다음 사항에 따라 달라집니다.
필요한 가용성 수준.
배포되는 응용 프로그램의 타입.
자신의 환경에서 받아 들여지 모범 사례.
MySQL이 지원하는 기본 솔루션은 다음과 같습니다.
MySQL 복제. 상세 : 제 17 장 "복제" .
MySQL Cluster. 상세 : 제 18 장 "MySQL Cluster NDB 7.3 및 MySQL Cluster NDB 7.4" .
Oracle VM Template for MySQL. 상세 정보 : 섹션 16.1 "Oracle VM Template for MySQL Enterprise" .
DRBD, Corosync, Pacemaker를 구현하는 MySQL. 상세 정보 : 섹션 16.2 "DRBD / Pacemaker / Corosync / Oracle Linux를 사용하는 MySQL의 개요" .
Windows Failover Clustering을 구현하는 MySQL. 상세 정보 : 섹션 16.3 "Windows 장애 조치 클러스터링을 사용하여 MySQL의 개요" .
Solaris Cluster를 구현하는 MySQL. Solaris Cluster의 이해를 바랍니다.
추가 옵션을 타사 솔루션에서 사용할 수 있습니다.
고 가용성 데이터베이스 서비스의 제공에 사용되는 각 아키텍처는 그것이 제공하는 가동 시간 수준에 따라 구분됩니다. 이러한 아키텍처는 다음 세 가지 주요 범주로 그룹화 할 수 있습니다.
데이터 복제.
클러스터 및 가상화 시스템.
공유 아무것도 지리적으로 복제 된 클러스터.
다음 그림에서와 같이 이러한 각 아키텍처는 단계적으로 가동 수준이 높아지기 때문에 그들에 의해 비용과 복잡성의 수준이 잠재적으로 커질 가능성이 있고, 이러한 균형을 맞춰야 수 있습니다. 단순히 고 가용성 아키텍처를 구현하는 것만으로는 실제로 HA가 실현된다는 보장은 없습니다. 실제로 공유 아무것도 클러스터의 구현 및 유지 관리가 불충분하면 간단한 데이터 복제 솔루션보다 가용성 수준이 시원스럽게 저하 될 수 있습니다.
그림 16.1 트레이드 오프 : 비용과 복잡성 vs 가용성
다음 표에서는 다양한 MySQL 솔루션의 HA 및 확장 성 기능을 비교하고 있습니다.
표 16.1 MySQL HA 솔루션의 기능 비교
요구 사항 | MySQL 복제 | DRBD | Oracle VM 템플릿 | MySQL Cluster |
---|---|---|---|---|
가용성 | ||||
플랫폼 지원 | MySQL Server가 지원하는 모든 것 | Linux | Oracle Linux | MySQL Cluster가 지원하는 모든 것 |
IP 페일 오버 자동화 | 아니오 | 예 | 예 | 커넥터 및 구성에 따라 |
데이터베이스 장애 조치 자동화 | 아니오 | 예 | 예 | 예 |
데이터 재 동기화 자동화 | 아니오 | 예 | N / A - 공유 스토리지 | 예 |
대표적인 장애 조치 시간 | 사용자 / 스크립트에 의존 | 구성에 따라 60 초 이상 | 구성에 따라 60 초 이상 | 1 초 이하 |
동기화 복제 | 아니, 비동기 및 준 동기 | 예 | N / A - 공유 스토리지 | 예 |
공유 스토리지 | 아니, 분산 | 아니, 분산 | 예 | 아니, 분산 |
지리적 중복 지원 | 예 | 네, MySQL 복제 | 네, MySQL 복제 | 네, MySQL 복제 |
업데이트 스키마 온라인 | 아니오 | 아니오 | 아니오 | 예 |
확장 성 | ||||
노드 수 | 하나의 마스터, 다중 슬레이브 | 하나의 활성 (주) 노드 하나의 패시브 (보조) 노드 | 하나의 활성 (주) 노드 하나의 패시브 (보조) 노드 | 255 |
내장로드 균형 | 읽기, MySQL 복제를 통해 | 읽기, MySQL 복제를 통해 | 읽기, MySQL 복제를 통해 및 장애 조치 중 | 예, 읽기 및 쓰기 |
읽기가 많은 워크로드를 지원 대응 | 예 | 예 | 예 | 예 |
쓰기가 많은 워크로드를 지원 대응 | 네, 응용 프로그램 수준 샤드에서 | 네, 응용 프로그램 수준 샤드 - 여러 액티브 / 패시브 쌍으로 | 네, 응용 프로그램 수준 샤드 - 여러 액티브 / 패시브 쌍으로 | 예, 자동 샤드에서 |
스케일 온라인 (노드 추가, 다시 분할 등) | 아니오 | 아니오 | 아니오 | 예 |