Replication(리플리케이션)
2021. 8. 25. 22:20ㆍDataBase
데이터를 다른 물리적으로 다른 서버 공간에 보관하는 것
두 개 이상의 DBMS시스템을 Master와 Slave로 나눠서 동일한 데이터를 저장하는 것
배경: 하나의 서버에 하나의 DB인 경우 쿼리의 대부분을 차지하는 SELECT를 처리하기에는 역부족
- Master DBMS: 데이터의 수정사항 반영. 데이터가 변경되면 Binary Log에 이력을 기록
- Slave DBMS: 실제 데이터를 복사
Replication의 처리 방식
Master와 Slave간의 무결성(데이터가 일치하는가) 검사를 하지 않는 비동기 방식으로 데이터를 동기화 한다.
동기화 방법
- Statement-Based: 실행된 SQL을 그대로 기록
- Row-Based: 변경된 행을 Base64로 인코딩하여 기록
- Mixed Type: Statement-Based와 Row-Based를 적절히 혼합한 형태
실행 과정
- Master 노드에 쓰기 트랜잭션이 수행된다.
- Master 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.(BIN LOG)
- Slave 노드의 IO Thread는 Master 노드의 로그 파일(BIN LOG)를 파일(Replay Log)에 복사한다.
- 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 |