카테고리 없음

📌 MHA (Master High Availability)란?

idea9329 2025. 2. 19. 14:19
반응형

 

MHA(Master High Availability) MySQL Replication 환경에서 Master 서버 장애 발생 시 자동으로 Failover(장애 조치)를 수행하는 고가용성(HA) 관리 도구입니다.

MySQL Replication을 사용하는 환경에서는 Master 서버가 장애 발생 시 Slave 서버로 전환하는 과정이 필요한데, MHA는 이 작업을 자동으로 수행하여 다운타임을 최소화하고 데이터 손실을 방지할 수 있도록 합니다.


✅ MHA의 주요 기능

1️⃣ 자동 Failover (Master 장애 감지 및 복구)

  • Master 서버가 장애 발생 시, 가장 적절한 Slave 서버를 새로운 Master로 승격(Promotion)함.
  • Slave 서버 중 최신 데이터가 반영된 서버를 자동으로 선택하여 새로운 Master로 설정.
  • 기존의 Slave 서버들은 새로운 Master에 자동으로 연결되도록 조정.

2️⃣ 최소한의 데이터 손실 (Zero-Loss 또는 최소 데이터 손실)

  • MySQL Replication 로그를 분석하여 데이터 손실을 방지.
  • 장애 발생 직전까지 Master의 Relay Log를 복구하여 최대한 데이터를 보호.

3️⃣ 읽기 전용(READ-ONLY) 모드 설정

  • Master 장애 시, 일시적으로 모든 Slave를 READ-ONLY 모드로 설정하여 데이터 정합성을 유지.
  • 새로운 Master가 설정된 후, 슬레이브들을 새로운 Master에 자동으로 연결.

4️⃣ 자동 복구 및 클러스터 재구성

  • 장애 복구 후 새로운 Master로 클러스터를 다시 정리하고, 기존 Master를 Slave로 설정하는 기능 제공.

🔹 MHA 아키텍처

MHA는 Manager Node Data(Node) Server로 구성됩니다.

📌 1. MHA Manager

  • MHA를 관리하는 서버로, Master 장애 감지 및 자동 Failover 수행.
  • Master 장애 발생 시 가장 최신 데이터를 가진 Slave를 새로운 Master로 승격.
  • 기존 Master 복구 시 이를 Slave로 전환하여 클러스터를 재구성.

📌 2. MHA Node (MySQL 서버)

  • MySQL Replication을 구성하는 Master 및 Slave 서버.
  • 각 노드는 MySQL Replication을 실행하며 MHA Manager의 명령을 받아 장애 조치.

📌 구성 예시:

+---------------------+
| MHA Manager        |
+---------------------+
          |
----------------------------
|          |          |       |
Master   Slave1   Slave2   Slave3
(장애 발생 시)  (새 Master)  (Slave 유지) (Slave 유지)

🚀 MHA vs 다른 MySQL HA 솔루션 비교

기능MHAMySQL Group ReplicationMySQL InnoDB ClusterMySQL NDB Cluster

Failover 자동화 ✅ 지원 ✅ 지원 ✅ 지원 ✅ 지원
데이터 손실 최소화 ✅ 가능 (Relay Log 복구) ✅ 가능 ✅ 가능 ✅ 가능
읽기 성능 확장성 ✅ Slave 활용 ✅ Multi-Primary 가능 ✅ Multi-Primary 가능 ✅ 가능
쓰기 성능 확장성 ❌ 제한적 ✅ Multi-Primary 가능 ✅ Multi-Primary 가능 ✅ 가능
설치 및 운영 난이도 중간 어려움 어려움 매우 어려움

💡 MHA는 기존 MySQL Replication 환경을 그대로 사용하면서 Failover를 자동화하는 데 최적화된 솔루션입니다.


✅ MHA의 장점

 기존 MySQL Replication 환경을 유지하면서 자동 Failover 적용 가능
 Zero-Loss(최소 데이터 손실) Failover 가능
 읽기 전용 모드 설정을 통해 데이터 정합성 유지
 구성이 비교적 간단하고 운영이 용이함
 MySQL과 완벽 호환 (추가적인 MySQL 설정 변경 불필요)


🚨 MHA의 단점

 Multi-Primary(다중 Master) 구조 미지원 → 오직 1개의 Master만 가능
 Master 장애 시 Failover 과정에서 짧은 다운타임이 발생할 수 있음 (약 10~30초 내외)
 Slave 서버의 Binlog 차이에 따라 데이터 손실 가능성이 존재 (하지만 Relay Log를 복구하여 최소화 가능)
 쓰기 작업은 반드시 Master에서만 가능


🔹 MHA 설치 및 구성 방법

📌 1. 사전 준비

  • MySQL Replication이 이미 구성되어 있어야 함.
  • SSH를 통해 각 MySQL 노드 간 비밀번호 없는 접속이 가능해야 함.
  • Perl 모듈 및 MHA 관련 패키지 설치 필요.

📌 2. MHA 패키지 설치

# MHA Manager 설치 (관리 서버)
yum install mha4mysql-manager

# MHA Node 설치 (MySQL 서버)
yum install mha4mysql-node

📌 3. MHA 설정 파일 작성

MHA Manager의 app1.cnf 파일을 작성하여 Replication 구성 정보 설정:

[server default]
user=root
password=your_password
ssh_user=root
repl_user=repl
repl_password=repl_password

[server1]
hostname=master_db
candidate_master=1

[server2]
hostname=slave_db1
candidate_master=1

[server3]
hostname=slave_db2

📌 4. MHA Failover 테스트

# MHA 자동 장애 조치 실행
masterha_manager --conf=/etc/mha/app1.cnf

📌 장애 발생 시 자동으로 새로운 Master로 Failover 진행!


🚀 결론

MHA는 MySQL Replication을 활용하는 환경에서 Master 장애 발생 시 자동으로 Failover를 수행하는 고가용성 솔루션입니다.

 자동 Failover 지원
 기존 MySQL Replication과 완벽 호환
 최소한의 데이터 손실 (Relay Log 복구 기능 지원)
 비교적 간단한 설정과 운영 가능

💡 고가용성이 중요한 MySQL 운영 환경에서는 MHA를 활용하면 안정적인 서비스 운영이 가능합니다! 🚀

반응형