Replication
- 여러 개의 DB를 권한에 따라 수직적인 구조로 구축하는 방식
: 두 개 이상의 DBMS를 Master / Slave로 나눠 동일한 데이터를 저장하는 방식
: Master Node는 쓰기 작업만 처리
: Slave Node는 읽기 작업만 처리
=> Master Node에는 데이터의 수정사항만 반영하고 Slave Node에 데이터를 복사
- 처리순서
1. Master Node에 쓰기 트랜잭션 수행
2. Master Node는 데이터를 저장하고 트랜잭션에 대한 Log를 기록
3. Slave Node의 입출력 스레드는 Master Node의 로그파일을 Replay log에 복사
4. Slave Node의 SQL 스레드는 Replay log파일을 한줄 씩 읽으며 데이터를 저장
- 장점
: 쿼리의 대부분인 select작업을 위해 Slave Node를 여러개 생성할 경우 부하분산과 성능향상 효과 증폭
: 비동기 방식으로 운영되어 지연 시간이 거의 없음
- 단점
: 노드들 간의 데이터 동기화가 보장되지 않아 일관성 저하
: Master Node의 다운시 복구 및 대처의 어려움
Clustering
- 여러개의 DB를 수평적으로 구축하는 방식
: Single Point of failure와 같은 문제를 해결할 수 있는 Fail Over 시스템 구축을 위해 사용
: 동기 방식을 통해 노드들 간의 데이터 동기화
※ Single Point of failure
= 시스템 구성요소중 한 지점에 장애가 발생할 경우 전체적으로 이어지는 장애
- 처리순서
1. 한 개의 노드에 쓰기 트랜잭션이 수행되고 Commit을 수행
2. 실제 디스크에 내용을 쓰기 전에 다른 노드로 데이터의 복제를 요청
3. 다른 노드에서 복제 요청을 수락(ACK)를 보내고 그 디스크에 쓰기를 시작
4. 다른 노드로부터 저장신호(OK)를 받으면 실제 디스크에 데이터를 저장
- 장점
: 노드간의 데이터를 동기화 함으로써 항상 일관성 있는 데이터를 얻을 수 있음
: 한 개의 노드가 다운되어도 다른 노드가 있어 장애없이 시스템을 운영할 수 있음
- 단점
: 여러 노드들간 데이터를 동기화하는 시간이 필요하므로 리플리케이션에 비해 쓰기능력이 떨어짐
: 장애가 전파된 경우 처리가 까다로우며, 데이터 동기화에 의해 스케일링에 한계 존재
- Active-Active
: 클러스터를 항상 가동하여 가용 가능한 상태로 두는 클러스터링 방식
- Active-Standby
: 일부 클러스터는 가동하고 일부 클러스터는 대기상태로 두는 클러스터링 방식
Refference
'Database > Database' 카테고리의 다른 글
[백엔드 개발자 로드맵 2020] DATABASE - CAP 이론 (Consistency, Availability, Partition tolerance) (0) | 2021.02.07 |
---|---|
[백엔드 개발자 로드맵 2020] DATABASE - Sharding (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - 인덱스 구조 (Index Structures) (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - 정규형 (0) | 2021.02.07 |
[백엔드 개발자 로드맵 2020] DATABASE - N+1 쿼리 문제 (0) | 2021.02.07 |