Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring
- PG-Strom
- springboot
- OGM
- exit code = -805306369
- tomcat
- Java
- maven
- JSP
- PostgreSQL
- HTML Special Entity
- Spring Cloud
- orioledb
- Eclipse
- loadcomplete
- STS
- Windows 10
- 서브라임 텍스트
- Next.js
- Spring Boot
- HTML Code
- NestJS
- MariaDB
- BRIN
- Maven Project
- tortoise SVN
- typeorm
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- graph database
- NextJs
Archives
- Today
- Total
Undergoing
MySQL Group Replication 본문
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 |