Database/Mysql

[Real MySQL] 16-1. 복제: 아키텍처

noahkim_ 2024. 9. 7. 18:23

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

  • 데이터베이스를 운영할 때, 가장 필요한 두가지는 확장성과 가용성
  • 복제는 이 두요소를 위해 사용되는 기술

 

1. 복제

  • 한 서버에서 다른 서버로 동기화되는 것

 

Source Server
  • 원본 데이터를 가진 서버
  • 변경이 최초로 이루어짐 (데이터 및 스키마)

 

Replica Server
  • 소스 서버로부터 변경 내역을 전달받는 서버
  • 소스 서버 동기화
    • 소스 서버로부터 데이터를 전달받아 자신의 리포지토리에 반영

 

목적

scale-out
  • 트래픽 대응 목적
  • scale-up보다 훨씬 더 유연한 구조

 

backup
  • 데이터 정합성이 깨질 경우
    • 백업 서버의 데이터로 사용함
  • 메인 서버가 터질 경우
    • 지리적으로 분산된 백업 서버가 메인 서버의 역할을 대신함

 

데이터 분석용
  • 데이터 분석은 리소스 소모가 큰 연산
  • 백업 서버에서 대신 담당하여 최적화
    • 메인 서버로 데이터를 분석할 경우 클라이언트 요청 처리에 영향을 미침

 

2. 아키텍쳐

Source Server

Binary Log Dump Thread
  • Replica Server에 binary log를 전송하는 역할
  • Replica Server에 보낼 binary log의 event를 읽음
    • 읽는 과정에서 binary log의 읽기 잠금이 걸림

 

Binary Log
  • 모든 event 저장 (데이터, 테이블, 권한, 계정 등)
  • 복제에 사용됨
  • 트랜잭션 처리 스레드에 의해 기록됨

 

Replica Server

Replication I/O Thread
  • Binary Log를 Disk에 저장
    1. Binary Log Dump Thread로부터 바이너리 로그 이벤트를 가져옴
    2. Relay Log에 기록
  • 복제가 시작되면 생성
    • START REPLICA or START SLAVE
  • 복제가 멈추면 종료
    • STOP REPLICA or STOP SLAVE

 

Replication SQL Thread
  • Relay Log를 읽고 실행
  • 상태 확인
    • "SHOW REPLICA STATUS" 명령어

 

Relay Log
  • Source Server로부터 받은 Binary Log
  • 이벤트 정보가 저장됨

 

Connection Metadata
  • I/O Thread에서 Source Server에 연결할 때의 DB 정보
    • 사용한 계정 정보
    • 수신받은 binary log 파일명
    • 수신받은 binary log 파일 위치 값
  • table
    • mysql.slave_master_info

 

Applier Metadata
  • relay log를 repository에 반영하는 컴포넌트
  • 최근 Apply된 정보
    • relay log 명
    • relay log 파일 위치 정보
  • table
    • mysql.slave_relay_log_info

 

3. 과정

  1. source server: 생성된 binary log가 replica server로 전송됨
  2. replica server: 저장 (로컬 디스크에 저장)
  3. replica server: 동기화 (리포지토리에 반영)