"Real MySQL" 책을 정리한 포스팅 입니다
1. 복제
- 한 서버에서 다른 서버로 동기화되는 것
Source Server
- 원본 데이터를 가진 서버
- 변경이 최초로 이루어짐 (데이터 및 스키마)
Replica Server
- 복제된 데이터를 가진 서버
- 소스 서버 동기화:소스 서버로부터 데이터를 전달받아 자신의 리포지토리에 반영
목적
scale-out
- 트래픽 대응 목적
- scale-up보다 훨씬 더 유연한 구조
backup
- 데이터 정합성이 깨질 경우 (개발자 실수 or 공격 등)
- 백업 서버의 데이터로 사용함
- 메인 서버가 터질 경우
- 지리적으로 분산된 백업 서버가 메인 서버의 역할을 대신함
데이터 분석용
- 백업 서버에서 대신 담당하여 최적화
- 데이터 분석은 리소스 소모가 큰 연산
- 메인 서버로 데이터를 분석할 경우 클라이언트 요청 처리에 영향을 미침
2. 아키텍쳐
Source Server
Binary Log
- event: 각 변경 정보
- 모든 event 저장 (데이터, 테이블, 권한, 계정 등)
- binary log 파일을 기반으로 복제가 이루어짐
- source server: 생성된 binary log를 replica server로 전송
- replica server: 저장 (로컬 디스크에 저장)
- replica server: 동기화 (리포지토리에 반영)
Binary Log Dump Thread
- Replica Server에 binary log를 전송하는 역할
- Replica Server에 보낼 binary log의 event를 읽음 (잠금 수행) + 전송
Replica Server
Relay Log
- Source Server로부터 받은 Binary Log
Connection Metadata
- I/O Thread에서 Source Server에 연결할 때의 정보
- 사용한 계정 정보
- 수신받은 binary log 파일명
- 수신받은 binary log 파일 위치 값
- table: mysql.slave_master_info
Applier Metadata
- Applier: relay log를 repository에 반영하는 컴포넌트
- 최근 Apply된 정보
- relay log 명
- relay log 파일 위치 정보
- table: mysql.slave_relay_log_info
I/O Thread
- Binary Log를 Disk에 저장
- Source Server에 접속
- Binary Log 요청 (to Binary Log Dump Thread)
- Binary Log 수신
- Relay Log에 기록
- 복제가 시작되면 생성 / 멈추면 종료
SQL Thread
- Relay Log를 읽고 실행
'Database > Mysql' 카테고리의 다른 글
[Real MySQL] 8-0. 인덱스: Disk (0) | 2024.09.07 |
---|---|
[Real MySQL] 8-3. 인덱스: 유일성 (0) | 2024.09.07 |
[Real MySQL] 5-2. 트랜잭션과 잠금 (0) | 2024.08.10 |
[Real MySQL] 15-3. 데이터 타입: 날짜와 시간 (0) | 2023.11.26 |
[Real MySQL] 15-2. 데이터 타입: 숫자 (0) | 2023.11.26 |