Undergoing

MySQL Group Replication 본문

개발/DB

MySQL Group Replication

Halkrine 2024. 7. 16. 14:01

MySQL Repilcation

  • 기본적으로 비동기 혹은 반동기 복제방식 사용
    • 반동기 복제 : 소스의 변동 내역을 전달 받았다고 알려줄 때까지 기다림
      • 소스 서버는 Replica 서버가 소스 서버로부터 전달받은 변경 이벤트를 릴레이 로그에 기록한 후 응답을 보내면 그 때 Transaction을 Commit함
  • Master 노드에서 변경되는 데이터에 대한 이력을 Binary Log에 기록하면 Replication Master thread가 이를 읽어 Slave에 전송하는 방식
  • 다음 네 가지 요소가 필요함
    • Master에서의 변경을 기록하기 위한 Binary Log
    • Binary Log를 읽어서 Slave 쪽으로 데이터를 전송하기 위한 Master Thread
    • Slave에서 데이터를 수신하여 Relay Log에 기록하기 위한 I/O Thread
    • Relay Log를 읽어서 해당 데이터를 Slave에 Apply하기 위한 SQL Thread

  • MySQL의 Migration은 다음과 같은 순서로 동작함
    • 클라이언트(Application)에서 Commit 을 수행
    • Connection Thead 는 스토리지 엔진에게 해당 트랜잭션에 대한 Prepare(Commit 준비)를 수행
    • Commit 을 수행하기 전에 먼저 Binary Log 에 변경사항을 기록
    • 스토리지 엔진에게 트랜잭션 Commit 을 수행
    • Master Thread 는 시간에 구애받지 않고(비동기적으로) Binary Log 를 읽어서 Slave 로 전송
    • Slave 의 I/O Thread 는 Master 로부터 수신한 변경 데이터를 Relay Log 에 기록(기록하는 방식은 Master 의 Binary Log 와 동일)
    • Slave 의 SQL Thread 는 Relay Log 에 기록된 변경 데이터를 읽어서 스토리지 엔진에 적용
  • Binary Log : , Create, Drop과 같은 DDL문과 Insert, Update, Delete와 같은 DML문을 통해서 데이터의 변화가 발생할 경우 해당 이벤트들을 기록하는 로그 파일
  • Relay Log : I/O thread를 통해서 받은 이벤트를 로컬에 저장되는 파일 있는 file에 저장. 보통 SQL thread가 이벤트를 읽고 나면 지우지만, SQL thread가 멈추어 있으면 relay log는 계속해서 크기가 커짐
  • 현재 MySQL의 완벽한 동기화 Replication은 mysql cluster 뿐임

Group Replication

  • fault-tolerant system(장애 허용 시스템)을 구현하는 데 사용
  • ‘다중 소스 업데이트’
  • 여러 서버를 하나의 시스템으로 구축하여 데이터를 파티셔닝하기 위한 시나리오를 사용
    • Network를 통한 Data 분산 파티셔닝
  • 여러 서버가 한 대인 것처럼 모든 변경 사항에 대한 데이터가 일관되게 적용될 수 있도록 구성

  • Binary Log를 Replica에 적용하는 부분이 변경
    • 통상의 mysql replication 및 반동기 replication은 master commit 후 slave에 enqueue
    • Group Replication은 Server 1에서 execute 후 타 서버 enqueue 요청하면서 commit 수행

https://lefred.be/content/mysql-group-replication-synchronous-or-asynchronous-replication/

https://dev.mysql.com/doc/refman/8.0/en/group-replication-plugin-architecture.html

Galera-cluster?

  • 동기방식의 Replication 구조를 사용하는 MultiMaster RDB Cluster
    • 논리적으로는 완전 동기이지만 실제 write 및 commit하는 과정이 별개이고, 각 노드 간에 는 비동기로 동작
    • Galera는 이를 Virtually Synchronous Replication이라 칭함
    • https://sightstudio.tistory.com/59

'개발 > DB' 카테고리의 다른 글

Multi Master Replication 기본 개요  (0) 2024.08.06
Overview of PostgreSQL Internals(PG14 기준)  (1) 2024.07.19
Aurora Replication  (0) 2024.07.13
OrioleDB  (0) 2024.07.12
PostGraphile  (0) 2024.07.11