Replication(리플리케이션)

2021. 8. 25. 22:20DataBase

데이터를 다른 물리적으로 다른 서버 공간에 보관하는 것

두 개 이상의 DBMS시스템을 MasterSlave로 나눠서 동일한 데이터를 저장하는 것

배경: 하나의 서버에 하나의 DB인 경우 쿼리의 대부분을 차지하는 SELECT를 처리하기에는 역부족 

  • Master DBMS: 데이터의 수정사항 반영. 데이터가 변경되면 Binary Log에 이력을 기록
  • Slave DBMS: 실제 데이터를 복사

출처: https://nesoy.github.io/articles/2018-02/Database-Replication

 


Replication의 처리 방식

 

Master와 Slave간의 무결성(데이터가 일치하는가) 검사를 하지 않는 비동기 방식으로 데이터를 동기화 한다.

 

동기화 방법

  • Statement-Based: 실행된 SQL을 그대로 기록
  • Row-Based: 변경된 행을 Base64로 인코딩하여 기록
  • Mixed Type: Statement-Based와 Row-Based를 적절히 혼합한 형태 


실행 과정

 

  1. Master 노드에 쓰기 트랜잭션이 수행된다.
  2. Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.(BIN LOG)
  3. Slave 노드의 IO Thread는 Master 노드의 로그 파일(BIN LOG)를 파일(Replay Log)에 복사한다.
  4. Slave 노드의 SQL Thread는 파일(Replay Log)를 한 줄씩 읽으며 데이터를 저장한다.

 


 

Replication의 장점

  • Scale-out Solutions: 여러 replica에 load를 분산시키기 떄문에 병목현상을 방지할 수 있다. 
  • Data security: 데이터가 slave로 복제되어 있기 때문에,  source data를(master service)에 대한 영향없이 데이터 백업이 가능하다. 
  • Analytics: source의 실행에(서비스에) 영향을 미치지 않고 데이터 분석이 용이하다.
  • Long-distance data distribution: 데이터를 여러 지리적 위치나 로컬 copy에 만들 수 있다.  

출처: 

https://mangkyu.tistory.com/97 

https://dev.mysql.com/doc/refman/5.7/en/replication.html

https://nesoy.github.io/articles/2018-02/Database-Replication

https://jins-dev.tistory.com/entry/Database-Replication-전반에-대한-이해

'DataBase' 카테고리의 다른 글

SQL(Structured Query Language)_DDL  (0) 2021.11.07
SQL(Structured Query Language)_DML  (0) 2021.11.07
효과적인 쿼리 저장  (0) 2021.08.25
Optimizer(최적화의 원리)  (0) 2021.08.24
Transaction(트랜잭션)  (0) 2021.08.17