DB/이론

[DB] Replication 이란? (Feat. Mysql, Mongo)

yubi5050 2022. 10. 3. 04:30

Replication 이란?

복제본 데이터베이스를 운용하는 것 (=한 서버에서 다른 서버로 동기화 하는 것)을 Replication이라고 지칭

출처:https://code-lab1.tistory.com/205

 

주로 DB 운용 상황에서 많이 사용되는데

데이터베이스(Master, 소스 서버), 복제된 데이터베이스(Slave, 레플리케이션 서버)라고 많이 부른다

 

Replication 사용 이유

Slave 데이터베이스는 Master 데이터베이스를 복제(Replication)하여 동일한 데이터를 가지게 됨

 

이유 1. 데이터 분산 부하 관리

  • Insert, Update, Delete 등의 작업 : Master 데이터베이스에서 처리
  • Select 등의 조회 작업 : Slave 데이터베이스에서 처리
  • ex) Scale-out 목적 트래픽 대응
  • ex) 데이터 분석의 경우 대량의 조회를 하는 경우가 많아, 쿼리가 무거울 수 있음. 전용 Replica 서버를 두어 분석 담당하게 함

 

이유 2. 데이터 안전성 (데이터 백업)

  • Master => Slave에서 데이터 백업을 통한 데이터 안정성 확보
  • 차후 Master 에서 DB가 손상되더라도 복구 가능

 

이유 3. 데이터의 지리적 분산

  • 만약 서비스가 여러 지역에서 운용되는 경우, 데이터 서버를 여러 곳에 두어 응답 속도 개선 가능
  • 다중화를 통한 데이터 가용성을 높임

 

Replication 복제 구조

  • 비동기 복제 : 소스 서버가 레플리카 서버에서 변경 이벤트가 정상적으로 전달됐는지 확인 x
  • 반동기 복제 : 전송 보장( request-response ) 적용은 보장 x
  • 멀티 레플리카 복제 : 두개 이상으로 1:N (하나는 백업용, 하나는 읽기용)
  • 체인 복제 :레플리카 서버가 많다면 하나의 소스 서버에서 대응 하기 힘들고, 읽고 전달하는 것 자체가 부하가 될 수 있어, 중간 레플리카 서버를 만듬
  • 듀얼 소스 복제 : 두개의 서버가 서로 소스 서버이자, 레플리카 서버로 구성되어 있는 것 (둘다 읽고 쓰기 가능, 한개의 서버 문제 발생시 바로 대응 가능)
  • 멀티 소스 복제 : N:1, 여러 서버에 분산되어 있는 데이터를 하나의 레플리카 서버에서 통합

 

출처:http://cloudrain21.com/mysql-replication

 

Replication 복제 원리 (Binary  Log)

Master(소스서버)와 Slave(레플리카서버)는 데이터 변경내역, 데이터베이스 테이블 구조 변경, 계정이나 권한 정보 등을 Binary log로 저장 관리

 

Master (소스서버)

  • Binary Log Dump Thread : Binary Log를 Slave(레플리카 서버)로 전송하는 역할

 

Slave (레플리카서버)

  • Replication I/O Thread(복제 서버, Binary Log Event를 가져와 로컬 서버의 파일 - Relay Log)로 저장하는 역할
  • Replication SQL Thread (복제 서버) : Relay Log 파일의 이벤트들을 읽고 실행함
  • Relay Log : Binary Log Event를 Replica Server에 파일로 저장한 것
  • Connection Metadata 란? 소스서버에 연결시 사용하는 정보

 

출처:http://cloudrain21.com/mysql-replication

 

Binary Log  방법

바이너리 로그 파일 위치 기반

  • 둘 간의 바이너리 로그 파일명과, 파일내 위치로 이벤트 식별
  • 동기화 (Server-id) 값 이용

 

글로벌 트랜잭션 id (GTID) 기반

  • 복제에 참여한 모든 slave들에게 동일한 고유 식별값을 가지게 함

 

Binary Log 형태

statement : sql문 자체를 바이너리 로그로 기록
row : 변경된 값 자체를 바이너리 로그로 기록(값 전체가 기록하는 방식이라 용량이 클 수 있음)
mixed : statement + row 혼합 방식

 

 

 

추가) MongoDB Replication 요약

단일 Replica Set /샤딩 기능이 추가된 Shared Cluster 로 구분 

1 Primary(기본) 노드 + (N) Secondary 노드

각 멤버간 서로 다른 멤버가 살아 있는지 계속 확인 메세지(Hearbeat)를 주고 받음

 

mongodb replica set 구조 - 출처:https://hoing.io/archives/4282

 

추가) 참고 하면 좋은 링크 : https://hoing.io/archives/4282

 

MongoDB Replica Set (1) - Replication 구성

 

hoing.io

 

'DB > 이론' 카테고리의 다른 글

[Cache] Memcached vs Redis 차이  (2) 2022.11.22
[DB] Clustering, Sharding, Replication 차이  (0) 2022.10.03
[DB] Index란?  (0) 2022.08.11
[DB] Transaction 격리 수준 종류 (Isolation Level)  (0) 2022.08.10
[DB] PostgreSQL vs MySQL  (0) 2022.08.10