MySQL Replication

Kkd·2025년 3월 4일
0

매일메일 개념정리

목록 보기
91/93

📌 **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 성능 저하 방지).

📌 리플리케이션 동작 원리

  1. Source 서버에서 데이터 변경 발생 (INSERT, UPDATE 등)
  2. 변경 내용을 Binary Log에 기록
  3. Replica 서버는 Source의 Binary Log를 IO Thread를 통해 읽음
  4. 읽어온 로그를 Relay Log에 저장
  5. 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-binSource에서 Binary Log 활성화
relay-logReplica에서 중간 로그 저장
read-onlyReplica를 읽기 전용으로 설정

📌 한눈에 보는 정리

구분SourceReplica
역할데이터 변경 및 기록변경 사항 복제 및 반영
읽기/쓰기읽기 + 쓰기읽기만 가능 (보통)
데이터 변경허용불가 (보통)
장점전체 데이터 변경 관리데이터 백업, 부하 분산 가능

추가 학습 자료

profile
🌱

0개의 댓글