MySQL 클러스터링은 고가용성과 무중단 서비스를 목표로 여러 개의 노드에서 데이터를 분산 저장하고, 장애 발생 시 자동으로 복구할 수 있도록 구성하는 방법입니다.
MySQL의 대표적인 클러스터링 방식인 MySQL NDB Cluster를 중심으로 개념, 구성 요소, 설정 방법을 안내합니다.
클러스터링이란?
클러스터링은 하나의 논리적인 DB 시스템을 여러 서버로 구성하여 장애 허용(fault-tolerance) 및 확장성을 높이는 구조입니다. MySQL에서는 대표적으로 NDB Cluster 또는 Galera Cluster 방식이 사용됩니다.
MySQL NDB Cluster 구성 요소
- Management Node (mgmd): 클러스터 설정을 관리
- Data Node (ndbd): 실제 데이터를 저장
- SQL Node (mysqld): 클러스터에 접근하는 MySQL 서버
MySQL NDB Cluster 설정 방법
1. 사전 준비
- 서버 최소 3대 (1대는 관리 노드, 2대는 데이터 노드)
- MySQL Cluster 패키지 설치 (NDB 포함)
2. config.ini 설정 (관리 노드에서)
[ndb_mgmd]
hostname=192.168.0.1
datadir=/var/lib/mysql-cluster
[ndbd default]
noofreplicas=2
datadir=/usr/local/mysql/data
[ndbd]
hostname=192.168.0.2
[ndbd]
hostname=192.168.0.3
[mysqld]
hostname=192.168.0.4
3. 서비스 시작
# 관리 노드 시작
ndb_mgmd -f /path/to/config.ini --initial
# 데이터 노드 시작 (각 데이터 노드에서 실행)
ndbd
# SQL 노드 시작 (mysqld에 NDB 설정 포함 필요)
mysqld --ndbcluster --defaults-file=/etc/my.cnf
클러스터링의 장점
- 무중단 서비스: 한 노드가 장애 나도 다른 노드가 대체
- 데이터 이중화: 데이터가 자동으로 복제됨
- 수평 확장성: SQL 노드 또는 데이터 노드를 추가하여 처리량 향상
클러스터링 시 주의사항
- 네트워크 지연에 민감하므로 로컬 네트워크 환경 추천
- 데이터 구조가 복잡한 JOIN에 불리할 수 있음
- 관리 노드 장애 시 클러스터 관리 불가 (다중 구성 추천)
MySQL Cluster vs. 일반 복제
| 구분 | MySQL Cluster | 일반 복제 |
|---|---|---|
| 데이터 동기화 | 동기식 | 비동기식 |
| 고가용성 | 높음 | 중간 (마스터 장애 시 수동 전환) |
| 지연 | 조금 더 있음 | 빠름 |
MySQL의 클러스터링은 고가용성과 데이터 복원력을 강화하고자 하는 환경에서 유용하게 활용됩니다.
단일 장애 지점을 줄이고 확장 가능한 구조를 만들고자 한다면, MySQL NDB Cluster나 Galera Cluster를 고려해보세요.
'개발 > DB' 카테고리의 다른 글
| MySQL에서 파티션을 통한 성능 최적화 (0) | 2025.09.04 |
|---|---|
| MySQL에서 데이터 복제의 지연 시간 최소화 방법 (0) | 2025.09.03 |
| MySQL에서 외부 서버와의 연동 방법 (1) | 2025.09.01 |
| MySQL에서 로깅과 모니터링을 통한 문제 해결 (1) | 2025.08.31 |
| MySQL에서 트랜잭션 충돌 해결 방법: 데드락과 락 대기 방지하기 (1) | 2025.08.30 |
