데이터베이스는 장애 없이 안정적으로 운영되어야 하며, 고가용성(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 인프라를 구성하려면 복제 구조를 제대로 이해하고, 장애 발생 시 자동 복구 체계를 마련하는 것을 추천합니다.
'개발 > DB' 카테고리의 다른 글
MySQL에서 데이터베이스 보안 강화 방법 (0) | 2025.08.25 |
---|---|
MySQL에서 사용자 관리 및 권한 부여 (0) | 2025.08.24 |
MySQL에서 데이터 삭제 및 갱신 시 주의사항 (1) | 2025.08.22 |
MySQL에서 데이터를 삽입하고 수정하는 방법 (0) | 2025.08.21 |
MySQL에서 날짜와 시간 관련 함수 사용법 (0) | 2025.08.20 |