📌 MySQL 리플리케이션(Replication)란?
MySQL 리플리케이션(MySQL Replication) 은 하나의 MySQL 서버(Primary, Master)의 데이터를 다른 MySQL 서버(Replica, Slave)로 복제하는 기능임.
✅ 주요 특징
• 데이터베이스 백업 및 장애 대비 → 하나의 서버 장애 발생 시 다른 서버에서 복구 가능
• 읽기 부하 분산(Read Scalability) → 여러 개의 읽기 전용 서버를 두어 성능 최적화 가능
• 데이터 분석 및 실시간 백업 → 운영 서버(Master)에 영향을 주지 않고 분석용 DB 운영 가능
✅ MySQL Replication의 기본 개념
클라이언트 → [Primary] → 데이터 변경 → [Replica1] [Replica2] … 데이터 복제
• Primary (Master): 데이터를 기록(Write)하는 서버
• Replica (Slave): Primary의 데이터를 복제(Replication)하여 저장하는 서버 (읽기 전용)
1️⃣ MySQL 리플리케이션의 기본 개념
MySQL Replication은 비동기 방식(Asynchronous) 으로 작동하며, Primary 서버에서 변경된 데이터를 로그(Binary Log)로 기록한 후, Replica 서버가 이를 받아 반영하는 방식으로 동작함.
📌 리플리케이션의 동작 과정
1. Primary 서버에서 데이터 변경 발생 (INSERT, UPDATE, DELETE)
2. Primary 서버가 변경 내용을 Binary Log(Binlog)에 기록
3. Replica 서버가 Binlog를 읽어 SQL 실행 기록을 가져옴
4. Replica 서버가 해당 SQL을 실행하여 데이터를 동기화
📌 MySQL 리플리케이션 기본 구조
Primary (Master) Replica (Slave)
--------------------- --------------------
1. 데이터 변경 (INSERT, UPDATE, DELETE)
2. Binary Log 기록 ← 3. Relay Log 저장
4. SQL 실행하여 동기화
2️⃣ MySQL 리플리케이션의 유형
MySQL Replication에는 여러 가지 유형이 있음.
✅ 1. 기본 리플리케이션 (Standard Replication)
• Primary (Master) → Replica (Slave) 로 단방향 복제
• Replica는 읽기 전용으로 사용 가능 (Write 작업 불가)
📌 예제
Client → [Primary (Master)] → [Replica1] → [Replica2]
✔ 주요 활용 사례:
• 읽기 부하 분산 (Replica를 읽기 전용 서버로 활용)
• 장애 복구 (Failover)
✅ 2. 멀티 소스 리플리케이션 (Multi-Source Replication)
• 여러 개의 Primary(Master)에서 하나의 Replica(Slave)로 복제
• 하나의 Replica 서버가 여러 Master 서버의 데이터를 복제할 수 있음.
📌 예제
[Master1] → [Replica]
[Master2] → [Replica]
✔ 주요 활용 사례:
• 여러 개의 데이터를 한 곳에서 통합하여 분석할 때 사용
✅ 3. 멀티 프라이머리 리플리케이션 (Multi-Primary / Multi-Master Replication)
• 두 개 이상의 Primary(Master) 간 데이터를 서로 복제하는 방식
• 모든 서버에서 데이터 변경 가능 (충돌 관리 필요)
📌 예제
[Master1] ↔ [Master2]
✔ 주요 활용 사례:
• 고가용성(HA, High Availability) 시스템 구축
• 글로벌 데이터베이스 동기화
3️⃣ MySQL 리플리케이션 설정 방법
✅ Step 1. Primary(Master) 서버 설정
-- MySQL 설정 파일(my.cnf) 수정
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = mydatabase -- 복제할 데이터베이스 지정
-- Primary 서버에서 Replica 계정 생성
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
-- Primary 서버의 상태 확인
SHOW MASTER STATUS;
📌 SHOW MASTER STATUS; 명령어 실행 시 File과 Position 값을 기록해둬야 함.
✅ Step 2. Replica(Slave) 서버 설정
-- MySQL 설정 파일(my.cnf) 수정
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
-- Primary 서버와 연결 설정
CHANGE MASTER TO
MASTER_HOST='192.168.1.100', -- Primary 서버 IP
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- Primary에서 확인한 값
MASTER_LOG_POS=123456; -- Primary에서 확인한 값
-- 리플리케이션 시작
START SLAVE;
-- 리플리케이션 상태 확인
SHOW SLAVE STATUS\G;
📌 SHOW SLAVE STATUS\G; 실행 시 Slave_IO_Running: Yes, Slave_SQL_Running: Yes 확인.
4️⃣ 리플리케이션 사용 사례
✅ 1. 읽기 부하 분산
• Primary(Master)에서 쓰기 작업을 처리하고, Replica(Slave)에서 읽기 작업을 수행.
• Replica를 읽기 전용 데이터베이스로 활용하여 성능 최적화 가능.
✅ 2. 장애 복구 및 백업
• Primary 서버 장애 발생 시, Replica를 Primary로 승격하여 장애 복구 가능.
✅ 3. 데이터 분석
• 실시간 데이터를 Replica 서버에 복제한 후, 분석 작업 수행.
• Primary에서 직접 분석하면 성능 저하 문제 발생 가능.
5️⃣ 리플리케이션 문제 해결 및 모니터링
리플리케이션이 정상적으로 동작하지 않을 경우, SHOW SLAVE STATUS\G; 명령어로 상태 확인.
📌 주요 에러 및 해결 방법
오류 메시지 | 원인 | 해결 방법 |
Seconds_Behind_Master > 0 | Replica가 Master를 따라잡지 못함 | 네트워크 확인, 성능 최적화 |
Could not find first log file | Binlog 삭제됨 | 새로운 복제 설정 필요 |
Relay log corrupted | Relay 로그 손상됨 | RESET SLAVE 후 다시 시작 |
📌 Replica 재설정
STOP SLAVE;
RESET SLAVE;
START SLAVE;
6️⃣ MySQL 리플리케이션 vs Galera Cluster
MySQL 리플리케이션과 Galera Cluster는 유사하지만 차이점이 있음.
비교 항목 | MySQL Replication | Galera Cluster |
데이터 복제 방식 | 비동기(Asynchronous) | 동기(Synchronous) |
읽기/쓰기 서버 | Master에서만 Write 가능 | 모든 노드에서 Write 가능 |
데이터 일관성 | 약한 일관성(Eventual Consistency) | 강한 일관성(Strong Consistency) |
고가용성 | Master 장애 시 수동 Failover 필요 | 자동 Failover 지원 |
✅ 정리:
• MySQL Replication → 읽기 부하 분산 & 백업 용도에 적합
• Galera Cluster → 고가용성(HA) & 다중 노드 동기화에 적합
📌 결론
✅ MySQL 리플리케이션이란?
• 하나의 Primary(Master)에서 여러 개의 Replica(Slave)로 데이터를 복제하는 기술.
• 읽기 부하 분산, 백업, 장애 복구, 데이터 분석 등의 목적으로 사용됨.
✅ 리플리케이션 유형
1. 기본 리플리케이션 → 단순 Primary → Replica 복제
2. 멀티 소스 리플리케이션 → 여러 개의 Primary → 하나의 Replica
3. 멀티 Primary(다중 Master) → 모든 서버가 데이터를 공유 (충돌 관리 필요)
✅ 사용 사례
• 트래픽이 많은 서비스에서 읽기 부하 분산
• 백업 및 장애 복구
• 데이터 분석 시스템과 운영 데이터베이스 분리
출처 : ChatGPT
'DB > MySQL' 카테고리의 다른 글
jOOQ (1) | 2025.04.16 |
---|---|
프로시저 (1) | 2025.04.06 |
[SQL] SQL Dialects (SQL 방언) (0) | 2025.02.21 |
[SQL] CHAR, VARCHAR (1) | 2024.12.18 |
[SQL] 트랜잭션 (0) | 2024.12.17 |