DB

[MySQL] (복제구조1️⃣) MySQL 복제란? 구조와 개념 완전 정리

인생아 2025. 7. 16. 21:39
반응형

MySQL 복제(Replication)는 하나의 MySQL 서버에서 실행된 변경 내용을
다른 서버로 실시간 또는 지연 동기화하는 기술이다.
대표적으로 Master-Slave 구조가 있으며, 최근에는 GTID 기반 복제
다중 소스 복제(Multi-source replication) 같은 다양한 형태도 활용된다.

✅ MySQL 복제란?

  • 하나의 주 서버(Master)에서 실행된 데이터를
    하나 이상의 보조 서버(Slave)로 전달하는 구조
  • 주로 읽기 부하 분산, 백업용 서버, 데이터 이중화, 장애 복구(HA) 용도로 활용
  • Master는 쓰기 중심, Slave는 읽기 전용으로 운영하는 것이 일반적

예를 들어 주문 시스템에서 Master는 주문 등록을 처리하고,
Slave는 관리자 화면에서 주문 목록을 조회하는 데 사용될 수 있다.

반응형

🔁 복제 구조 기본 흐름

MySQL 복제는 기본적으로 3단계 구조로 작동한다:

  1. Binary Log 기록 (Master)
    • Master 서버는 데이터 변경 내용을 binlog (바이너리 로그)에 기록한다
    • 예: INSERT, UPDATE, DELETE 등의 DML
  2. Relay Log 수신 (Slave)
    • Slave는 Master의 binlog를 I/O 쓰레드를 통해 읽어와
      로컬에 relay log로 저장한다
  3. 실행 반영 (Slave)
    • SQL 쓰레드가 relay log를 읽고 자신의 DB에 동일하게 실행한다
    • 이로써 Slave가 Master의 상태를 따라가게 된다

🧩 복제 구성 요소 정리

구성 요소 설명
binlog Master의 데이터 변경 이력을 기록하는 로그 파일
relay log Slave가 Master로부터 받아온 binlog 복사본
I/O thread Slave에서 Master의 binlog를 받아오는 역할
SQL thread relay log를 읽어 실제 쿼리를 수행하는 역할
server_id 각 서버의 고유 ID (복제 설정 시 필수)
반응형

🔍 복제 방식 종류

1️⃣ 비GTID 기반 복제 (전통적 방식)

  • MASTER_LOG_FILE + MASTER_LOG_POS 값을 기준으로 복제 위치 추적
  • 설정이 복잡하고, 장애 발생 시 복구 과정이 번거로움

2️⃣ GTID 기반 복제

  • Global Transaction ID로 각 트랜잭션을 고유하게 식별
  • 복제 위치 관리가 자동화되며, 장애 복구가 훨씬 쉬움
  • MySQL 5.6 이상 권장 방식

두 방식의 차이는 다음 글에서 자세히 다룰 예정이야.

🧠 MySQL 복제를 사용하는 이유

  • 읽기 트래픽 분산: 다수의 읽기 쿼리를 Slave로 분산시켜 성능 향상
  • 백업 전용 서버 확보: Slave에서 백업 작업 수행 → Master 성능 저하 방지
  • 고가용성(HA) 구성: Master 장애 발생 시, Slave를 즉시 승격해 다운타임 최소화
  • 보고서/통계 쿼리 분리: 무거운 분석용 쿼리를 Slave에서만 실행

⚠️ 주의할 점

  • 복제는 완전한 동기화 구조가 아니다 → 데이터 지연 가능
  • Master → Slave 간 통신이 끊기면 복제가 중단될 수 있음
  • Slave는 기본적으로 쓰기 불가(읽기 전용)로 구성해야 함
  • binlog_format 설정에 따라 복제 안정성이 달라질 수 있음 (ROW 권장)

📘 공식 문서 참고

https://dev.mysql.com/doc/refman/8.0/en/replication-howto.html

 

반응형