MySQL의 클러스터링(Clustering) 개념과 설정 방법

 

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를 고려해보세요.