반응형
MySQL을 서비스에 적용할 때 단일 인스턴스로 운영하는 건 매우 위험하다.
예상치 못한 장애가 발생하면 데이터베이스 접속이 끊기고, 서비스 전체가 멈출 수 있다.
이를 방지하기 위한 핵심 전략이 바로 고가용성(HA: High Availability) 구성이다.
MySQL은 다양한 방식으로 고가용성을 지원하며,
대표적으로 Group Replication, MHA, MySQL Cluster, ProxySQL 기반 자동 전환 구조 등이 있다.

✅ 고가용성(HA)이란?
- 데이터베이스의 중단 시간을 최소화하는 기술
- 시스템 장애 발생 시에도 서비스가 가능한 상태를 유지
- **자동 장애 감지 + 빠른 전환(Failover)**이 핵심
- 단일 장애점(SPOF)을 제거하고, 무중단 운영을 목표로 한다
🔁 고가용성 구성 목적
- 서비스 연속성 보장 (24x7)
- 다운타임 최소화
- 데이터 손실 방지
- 운영자介 수동 개입 없이 자동 전환
실무에서는 주로 Active-Standby, Multi-Master, 비동기/반동기 복제 구조를 조합해 구현한다.
반응형
🧩 MySQL에서의 HA 구성 방식
1️⃣ Master-Slave 복제 + 수동 장애 전환
- 가장 기본적인 형태
- Master 장애 시, 운영자가 Slave를 수동으로 승격
- 설정은 간단하지만 자동화가 없고 복구 속도가 느림
2️⃣ MHA (MySQL Master High Availability)
- Master 장애를 자동으로 감지하고, Slave를 자동 승격
- Slave 중 하나를 새 Master로 설정하고, 나머지 슬레이브를 재구성
- 트랜잭션 손실을 줄이기 위해 바이너리 로그를 자동 추출
장점: 안정성, 성숙도 높음
단점: 외부 툴 의존, 구성 복잡도 있음
3️⃣ Group Replication
- MySQL 자체 기능으로 지원하는 Multi-Master 고가용성 구조
- 3개 이상의 노드로 구성하고, 자동 합의(Quorum) 기반으로 동작
- 각 노드는 서로 복제하며, 장애 시 자동 선출됨
장점: MySQL 자체 기능, 자동화 우수
단점: 설정 복잡, 성능 부담 (특히 쓰기 작업 시)
4️⃣ MySQL NDB Cluster
- 데이터가 여러 노드에 분산 저장되고,
SQL 노드 + 데이터 노드 + 관리 노드 구조로 구성됨 - 실시간 무중단 서비스를 위해 설계된 고가용성 아키텍처
장점: 진정한 클러스터 구조
단점: 매우 복잡하고 튜닝 난이도 높음, 일반 서비스에는 과함
5️⃣ ProxySQL + Replication 기반 구성
- 프록시 서버에서 Master 장애 감지 → 자동 전환
- 읽기/쓰기를 자동 분리하고, 로드 밸런싱도 가능
장점: 구성 유연, 다양한 백엔드 연동 가능
단점: 프록시 서버 자체가 SPOF가 되지 않도록 이중화 필요
반응형
🧠 실무에서 어떤 방식이 적합할까?
| 방식 | 자동 장애 전환 | 구성 난이도 | 실무 적용성 |
| Master-Slave + 수동 | ✖ | 낮음 | 중소형 환경 |
| MHA | ◎ | 보통 | 중대형 서비스 |
| Group Replication | ◎ | 다소 높음 | 신서비스, 다중 리전 |
| MySQL Cluster | ◎ | 매우 높음 | 금융, 통신 등 특수 환경 |
| ProxySQL 구조 | ◎ | 중간 | 커머스, 뉴스, API 서버 등 |
서비스의 규모, 중요도, 운영 인력의 역량에 따라 가장 적합한 구조는 달라진다.
특히 복제와 고가용성을 동일하게 보면 안 되고,
복제은 데이터 동기화, 고가용성은 장애 대응을 위한 개념이라는 점도 기억해두자.
📘 공식 문서 참고
https://dev.mysql.com/doc/refman/8.0/en/ha.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] (JSON1️⃣) JSON 타입이란? 구조와 활용 예제 정리 (0) | 2025.07.17 |
|---|---|
| [MySQL] (고가용성4️⃣) Group Replication vs MHA 실무 비교와 선택 가이드 (0) | 2025.07.17 |
| [MySQL] (고가용성3️⃣) MHA 구성 방법과 장애 복구 흐름 정리 (2) | 2025.07.17 |
| [MySQL] (고가용성2️⃣) Group Replication 구성과 특징 완전 분석 (0) | 2025.07.17 |
| [MySQL] (복제구조4️⃣) 복제 환경에서 자주 발생하는 문제와 해결법 (2) | 2025.07.16 |
| [MySQL] (복제구조3️⃣) GTID 기반 복제 완전 이해하기 (0) | 2025.07.16 |
| [MySQL] (복제구조2️⃣) Master-Slave 복제 설정 실습 가이드 (0) | 2025.07.16 |
| [MySQL] (복제구조1️⃣) MySQL 복제란? 구조와 개념 완전 정리 (0) | 2025.07.16 |