📌 **MySQL Replication이란?
MySQL Replication은 하나의 MySQL 서버(Source, Master)의 데이터를 다른 MySQL 서버(Replica, Slave)로 복제하는 기술입니다.
즉, 데이터 변경 사항(INSERT, UPDATE, DELETE 등)을 다른 서버로 전달해, 실시간으로 데이터를 동일하게 유지하는 방식입니다.
- 보통 Source 서버에서 데이터를 변경하면, 그 변경사항이 Replica 서버로 복제됩니다.
- Replica 서버는 Source 서버의 데이터를 읽기 전용으로 유지합니다.
📌 Replication 구성 요소
1. Source (Master)
- 원본 데이터를 가지고 있는 서버
- 데이터를 수정하면, 이 변경 사항을 바이너리 로그(Binary Log)에 기록
- Replica가 이 로그를 읽어가도록 제공
2. Replica (Slave)
- Source 서버의 변경 사항을 받아서 그대로 반영하는 서버
- Source의 바이너리 로그를 읽어서, 동일한 쿼리를 실행해 데이터 동기화
📌 왜 리플리케이션을 사용하나요?
1. 백업 및 데이터 보호
- Source 서버가 장애 나도 Replica 서버에서 데이터를 유지할 수 있음.
2. 부하 분산
- Source는 쓰기 작업 담당,
- 여러 Replica는 읽기 작업 담당.
- 트래픽을 나눠서 성능을 높일 수 있음.
3. 실시간 분석
- 실시간으로 데이터를 분석해야 하는 경우, Replica에서 분석 작업 수행 가능 (Source 성능 저하 방지).
📌 리플리케이션 동작 원리
- Source 서버에서 데이터 변경 발생 (INSERT, UPDATE 등)
- 변경 내용을 Binary Log에 기록
- Replica 서버는 Source의 Binary Log를 IO Thread를 통해 읽음
- 읽어온 로그를 Relay Log에 저장
- Relay Log를 기반으로 실제 쿼리를 실행하여 데이터를 동기화 (SQL Thread)
📌 리플리케이션 종류
종류 | 설명 |
---|
단방향 리플리케이션 | 하나의 Source에서 여러 Replica로 데이터 복제 |
다중 소스 리플리케이션 | 하나의 Replica가 여러 Source에서 데이터 복제 (MySQL 5.7부터 지원) |
비동기 리플리케이션 | Replica가 Source의 변경 사항을 비동기적으로 반영 (기본) |
반동기 리플리케이션 (Semi-Synchronous) | 일부 데이터가 Replica에 반영되었을 때만 Source에서 트랜잭션 커밋 (장애 시 데이터 유실 감소) |
완전 동기 리플리케이션 | Source와 Replica 모두에 데이터가 저장되어야 트랜잭션 커밋 (거의 사용 안 함) |
📌 리플리케이션의 주요 목적
목적 | 설명 |
---|
백업 및 데이터 보존 | Source 장애 시 Replica로 대체 가능 |
읽기 부하 분산 | 읽기 쿼리를 Replica로 분산해 성능 향상 |
데이터 분석 | 분석용 서버를 별도로 운영하여 운영 DB 부하 감소 |
실시간 데이터 복제 | 다른 지역에 실시간 데이터 복제 및 DR(재해 복구) 구성 |
📌 장점과 단점
✅ 장점
- 데이터 이중화로 장애 대비 가능
- 읽기 부하 분산으로 성능 개선
- 특정 서버는 백업, 데이터 분석 전용으로 운영 가능
❌ 단점
- 기본 리플리케이션은 비동기라서 Source 장애 시 최신 데이터 유실 가능
- Source와 Replica 간 데이터 동기화 지연 발생 가능
- 네트워크 상태에 따라 리플리케이션 속도 저하 가능
- 관리 및 모니터링 필요 (리플리케이션 중단 감지, 데이터 불일치 체크 등)
📌 리플리케이션 구성 예시
+------------------+ +------------------+
| Source (Master) | ---> | Replica (Slave1) |
| | | |
+------------------+ +------------------+
|
v
+------------------+
| Replica (Slave2) |
+------------------+
- Source는 데이터 변경 사항을 기록
- Replica 1, 2는 Source의 변경 사항을 읽고 반영
- 서비스는 Source에 쓰고, Replica에서 읽어오는 구조로 구성 가능
📌 주요 설정 파라미터 예시
설정 항목 | 설명 |
---|
server-id | 서버 고유 ID (Source/Replica 모두 설정 필요) |
log-bin | Source에서 Binary Log 활성화 |
relay-log | Replica에서 중간 로그 저장 |
read-only | Replica를 읽기 전용으로 설정 |
📌 한눈에 보는 정리
구분 | Source | Replica |
---|
역할 | 데이터 변경 및 기록 | 변경 사항 복제 및 반영 |
읽기/쓰기 | 읽기 + 쓰기 | 읽기만 가능 (보통) |
데이터 변경 | 허용 | 불가 (보통) |
장점 | 전체 데이터 변경 관리 | 데이터 백업, 부하 분산 가능 |
추가 학습 자료