MySQL 고가용성은 장애 또는 중단 시 MySQL 데이터베이스를 계속 사용할 수 있도록 선택할 수 있는 옵션입니다. 이 기능을 사용하면 더 높은 가동시간 요구 사항과 데이터 손실 허용 오차를 설정할 수 있습니다. 이 문서에서는 고가용성의 일반적인 개념이 무엇을 의미하는지, 그리고 MySQL의 고가용성 옵션이 어떻게 작동하는지 살펴보겠습니다.
고가용성은 시스템 또는 서비스가 지속적으로 작동하며 장애나 정전이 발생할 때 가용성을 유지하는 기능입니다. 고가용성 시스템은 조직의 미션 크리티컬 시스템과 애플리케이션이 항상 가동되도록 보장합니다. 이는 미션 크리티컬 시스템의 고장이 심각한 결과를 초래할 수 있는 헬스케어, 금융 및 항공과 같은 분야의 기업에게 특히 중요합니다.
고가용성은 일반적으로 서비스 수준 계약(SLA)에 의해 정의된 가동시간의 백분율로 표시되며, 100점은 절대 실패하지 않는 시스템을 나타냅니다. 이는 사실상 달성할 수 없기 때문에, 대부분의 조직은 “99%” 또는 99.999% 가용성을 목표로 합니다.
고가용성 시스템은 폴트가 발생하면 즉시 복구할 수 있어야 합니다. 고가용성 아키텍처에는 복구 가능성과 고가용성을 보장하기 위해 함께 작동하는 최소 세 가지 기본 요소가 필요합니다.
MySQL은 애플리케이션이 더 높은 가동시간(및 데이터 손실 허용 오차 없음)에 대한 요구 사항을 충족할 수 있도록 지원하는 고가용성 옵션을 제공합니다. 고가용성 옵션이 켜져 있는 경우 MySQL 시스템은 서로 다른 장애 도메인 또는 가용성 영역에 걸쳐 3개의 인스턴스를 생성합니다.
데이터는 MySQL 그룹 복제를 사용하여 세 인스턴스 간에 복제되며, 애플리케이션은 데이터베이스에서 데이터를 읽고 쓰기 위한 기본 인스턴스에 연결됩니다. 장애가 발생하면 시스템이 몇 분 내에 보조 인스턴스에 대한 자동 페일오버를 트리거합니다.
페일오버 메커니즘은 서비스를 복제된 인스턴스로 전송합니다. 둘 이상의 백업 인스턴스를 사용할 수 있는 경우, 장애 조치 메커니즘은 기본 노드로 승격할 최상의 인스턴스를 선택합니다.
2차 인스턴스로의 페일오버가 발생하면 고가용성 기능은 모든 애플리케이션 및 사용자 연결을 새로운 1차 노드로 리디렉션합니다. 또한 기존 기본 노드의 모든 쿼리를 새 기본 데이터베이스로 리디렉션합니다.
가동 시간은 시스템을 사용할 수 있고 올바르게 작동하는 시간이며, 시스템이 작동될 것으로 예상되는 총 시간의 백분율로 표시됩니다. 가동시간이 높다는 것은 시스템이 대부분 예상대로 작동하고 있음을 의미합니다.
다양한 수준의 MySQL 고가용성으로 예상할 수 있는 가동 시간은 구현하는 특정 고가용성(HA) 솔루션에 따라 달라집니다.
MySQL Replication을 사용하면 HA 기능이 없는 MySQL 서버보다 높은 가동시간을 지원하기 위해 이중화 및 페일오버를 제공할 수 있도록 여러 서버를 설정할 수 있습니다. 마스터-슬레이브 구성은 읽기 및 쓰기를 허용하는 단일 마스터 서버와 하나 이상의 읽기 전용 슬레이브 서버를 사용합니다. 마스터 서버의 데이터는 슬레이브 서버에 비동기적으로 복제됩니다.
페일오버를 구현하려면, 장애 발생 시 마스터로 승격될 수 있는 대기 서버로 하나 이상의 슬레이브 서버를 설정해야 합니다. 페일오버는 일반적으로 쿼리를 수락할 수 있도록 승격된 슬레이브의 상태를 읽기-쓰기 모드로 변경하여 슬레이브 노드를 마스터 노드로 승격해야 하는 수동 프로세스입니다.
페일오버는 수동으로 수행되기 때문에 시간이 오래 걸리고 인적 오류가 발생하기 쉬우며, 이로 인해 정전이 더 길어질 수 있습니다. 또한 MySQL Replication은 비동기식 복제를 사용합니다. 즉, 마스터가 실패하면 마스터에서 커밋된 트랜잭션이 아직 슬레이브 서버에 복제되지 않았을 수 있습니다. 심각한 데이터 손실이 발생하는 경우, 데이터를 복구해야 하므로 시스템 다운 시간이 늘어납니다.
MySQL 그룹 복제를 사용하면 MySQL 복제보다 더 높은 가동시간을 달성할 수 있습니다. MySQL 그룹 복제를 사용하면 하나의 서버가 기본 서버로 지정되고 다른 서버가 보조 서버로 지정된 그룹에 여러 MySQL 서버를 설정할 수 있습니다. 그룹의 각 서버는 데이터 복사본을 유지하고 복제를 사용하여 복사본이 동기화된 상태로 유지되도록 합니다.
기본 서버가 다운되면 그룹의 보조 서버가 자동으로 장애를 감지하고 장애 조치 프로세스를 시작합니다. 보조 서버 중 하나가 자동으로 새 기본 서버로 승격되어 클라이언트의 요청을 제공하기 시작합니다. 그룹의 다른 보조 멤버는 이제 새 기본 서버로부터 업데이트를 받고 클라이언트 읽기 요청을 계속 처리합니다.
오류가 발생한 서버가 다시 온라인 상태로 돌아오면 자동으로 그룹에 보조 서버로 다시 가입됩니다.
MySQL 그룹 복제를 통해 장애 감지 및 페일오버가 자동으로 발생하기 때문에 다운타임은 최소화되며 사용자와 애플리케이션은 일반적으로 정전이 발생했음을 알지 못합니다.
MySQL Cluster HA 솔루션은 최고 수준의 가동시간을 제공합니다. 자동 페일오버 및 로드 밸런싱과 함께 고가용성 분산 데이터베이스 시스템은 높은 수준의 가용성, 성능 및 확장성을 제공하며 거의 제로에 가까운 다운타임을 제공하도록 설계되었습니다.
MySQL 클러스터는 데이터를 저장하고 관리하기 위해 함께 작동하는 세 가지 유형의 노드를 사용합니다.
클러스터에 있는 하나 이상의 노드가 실패하면 클러스터는 자동으로 문제를 감지하고 장애 조치 프로세스를 트리거합니다. 전체 프로세스는 일반적으로 장애 발생 후 1초 이내에 발생하며, 클라이언트 애플리케이션에 대한 서비스를 중단하지 않습니다. 클러스터는 다운타임 없이 정상적으로 계속 작동합니다.
복구 시간은 MySQL 시스템이 정전에서 복구하는 데 걸리는 시간을 측정한 것입니다. 복구 시간이 길어지면 가용성이 저하되고 수익, 직원 생산성 및 고객 만족도를 창출하는 비즈니스 능력에 직접적인 영향을 미칠 수 있습니다.
MySQL 에서 복구 시간은 사용하는 복제 유형에 따라 달라집니다.
MySQL 고가용성 요구 사항을 확인하려면 다음과 같은 몇 가지 요소를 고려해야 합니다.
MySQL 고가용성 솔루션이 필요한 몇 가지 사용 사례를 살펴보겠습니다.
트래픽이 많은 웹사이트는 수천 명의 동시 사용자뿐만 아니라 초당 수천 개의 쿼리와 트랜잭션을 처리합니다. 서버 이중화 및 로드 밸런싱과 같은 고가용성 측정은 데이터베이스가 사용 가능한 상태로 유지되고 로드를 처리할 수 있도록 합니다.
이중화 서버는 서버가 고장나더라도 웹 사이트를 계속 사용할 수 있도록 보장하며, 여러 서버에 걸쳐 들어오는 요청의 로드 밸런싱은 단일 서버가 과부하를 일으키고 오프라인으로 전환되는 것을 방지합니다.
미션 크리티컬 시스템 및 애플리케이션을 사용하는 기업은 높은 수준의 가용성과 가동시간이 필요합니다. 대부분의 경우, 이러한 시스템은 다운타임을 감당할 수 없으며 데이터베이스는 항상 사용 가능해야 합니다.
그룹 복제 또는 클러스터와 같은 MySQL HA 솔루션은 다운타임을 거의 또는 전혀 초래하지 않는 자동 페일오버 메커니즘을 채택하기 때문에 이 사용 사례에 이상적입니다.
퓨어스토리지 ® 에Evergreen ™는 다운타임 없는 구축을 제공하는 구독 포트폴리오입니다. Evergreen은 퓨어스토리지 고유한 스토리지 어레이 아키텍처와 결합하여 서비스 워크로드를 중단하지 않고 스토리지 인프라를 업그레이드할 수 있도록 지원합니다.
퓨어스토리지는 또한 멀티사이트 active-active 스트레치 클러스터인 Purity ActiveCluster ™를 통해 액티브-액티브 클러스터링 과 자동, 투명 페일오버를 지원하여 RPO와 RTO를 제로화합니다. 퓨리티 액티브클러스터 active-active
또한 미션 크리티컬 애플리케이션에 엔터프라이즈급 클라우드 안정성을 제공하는 Pure Cloud Block Store 고려해 보세요. 무중단 업그레이드 및 가용성 영역 전반에서 고가용성은 멀티 클라우드 비즈니스 연속성 및 재해 복구를 위한 고가용성을 제공합니다.
퓨어스토리지 제품이나 인증 관련 질문이나 코멘트가 있으신가요? 저희가 도와드립니다.
라이브 데모를 예약하고 퓨어스토리지가 데이터를 어떻게 강력한 결과로 전환해주는지 직접 확인해 보세요.