MySQL에서 데이터베이스 복제와 고가용성 구성하기

 

데이터베이스는 장애 없이 안정적으로 운영되어야 하며, 고가용성(High Availability)은 이를 실현하기 위한 핵심 요소입니다. MySQL에서는 복제(Replication) 기능을 통해 읽기 부하 분산, 장애 복구, 데이터 백업 등 다양한 목적을 달성할 수 있습니다.

MySQL에서 데이터베이스 복제를 설정하는 방법과, 다양한 고가용성 구성 방안에 대해 알아보겠습니다.

 


MySQL 복제(Replication)란?

MySQL 복제는 한 서버(마스터)의 데이터를 다른 서버(슬레이브)동기화하는 기능입니다.

  • 비동기 복제: 기본 설정. 마스터에서 커밋된 데이터를 슬레이브로 전송
  • 세미-동기 복제: 슬레이브가 최소한 하나 이상 ACK해야 마스터 커밋
  • 완전 동기 복제: Group Replication 또는 Galera Cluster로 구현

복제 구성 요소

  • Binary Log: 마스터에서 발생한 변경 로그
  • IO Thread: 슬레이브가 마스터로부터 로그를 받아옴
  • SQL Thread: 로그를 읽고 슬레이브에 적용

 


MySQL 복제 설정 방법 (기본 마스터-슬레이브)

Step 1: 마스터 설정


[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = ROW
  

사용자 생성:

CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
  

Step 2: 슬레이브 설정


[mysqld]
server-id = 2
relay-log = relay-log
  

Step 3: 복제 시작

CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='password',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=12345;

START SLAVE;
  

SHOW SLAVE STATUS\G 명령어로 복제 상태를 확인할 수 있습니다.

 

 


고가용성 구성 방법

1. MHA (Master High Availability)

장점: 자동 장애 조치(Failover), 중단 시간 최소화

단점: 외부 도구 설치 필요, 구성 복잡도 있음

2. MySQL Group Replication

MySQL 5.7 이후 공식 지원. 멀티마스터 복제를 지원하며 동기화 및 자동 장애 복구 기능을 제공합니다.

3. Galera Cluster

다중 마스터 쓰기 지원. 고성능 고가용성 환경에 적합하지만 네트워크 지연에 민감합니다.

 


읽기 부하 분산(Read Scale-out)

슬레이브 서버는 주로 읽기 전용 쿼리를 처리하여 마스터의 부담을 줄입니다. 애플리케이션에서 슬레이브로 SELECT 쿼리를 분산하면 성능이 향상됩니다.

 


주의사항 및 팁

  • 슬레이브와 마스터 간 시간 동기화(NTP) 필수
  • 슬레이브 지연(lag) 모니터링 필요
  • GTID(전역 트랜잭션 ID)를 이용하면 더 안정적인 복제 가능
  • 백업/장애 복구 테스트 주기적으로 수행

 

MySQL의 복제 기능은 고가용성과 데이터 안정성을 위한 핵심 기능입니다. 단순한 마스터-슬레이브 구성부터 고급 Group Replication까지, 서비스 규모에 맞게 적절한 아키텍처를 선택하는 것이 중요합니다.

안정적이고 확장 가능한 DB 인프라를 구성하려면 복제 구조를 제대로 이해하고, 장애 발생 시 자동 복구 체계를 마련하는 것을 추천합니다.