클러스터(Cluster)
DB를 여러개의 서버가 나눠서 처리하도록 한다.
장점
서버 한 대가 죽어도 대비가 가능하다.
용도
- 고가용성
DB의 가용성이란 DB가 동작하고 있는 시간과 정지한 시간의 비율이다.
DB 시스템을 구성할 서버나 스토레지 장비를 각각 2대 이상으로 구성해서, 만의 하나 어느쪽인가에 장애가 발생했다고 하더라도 단 시간내에 운용을 재개할 수 있도록 한다.
- 병렬처리
- 성능향상
종류
- Active - Active Clustering
DB서버들이 각각 Active 상태로 둔다.
- 서버 하나가 죽어도 다른 서버가 역할을 바로 수행하여 중단되는 시간이 없다.
- 같이 사용되어 CPU와 메모리 이용률을 올릴 수 있다.
- 저장소 하나를 공유하면 병목현상이 발생될 수 있다.
- 병목현상 : 전체 시스템이 성능이나 용량이 하나의 구성요소르 인해 제한을 받는 현상
- Active - StandBy Clustering
하나의 서버만 Active, 나머지는 StandBy상태
- 상대적 적은 비용.
- 서버가 다운되었을 때 다른 서버가 Active로 전환되는데 시간이 들어 서버가 중단되는 시간이 있다.
리플리케이션(Replication)
두 개 이상의 DBMS 시스템을 Master / Slave 로 나눠서 동일한 데이터를 저장하는 방식
Master DBMS에는 데이터의 수정사항을 반영만 하고 Replication 을 하여 Slave DBMS에 실제 데이터를 복사한다.
장점
QUERY의 대부분은 SELECT가 차지한다.
이 부분의 부하를 낮추기 위해 많은 SLAVE DATABASE를 생성하게 된다면 성능 향상 효과를 얻을 수 있다.
단점
테이블에 데이터 자체가 엄청나게 많다고 한다면 SLAVE DB서버를 N대로 늘려도 원하는 데이터를 테이블로 부터 찾는데 많은 시간이 소요 될 것이다.
저장 과정
- MASTER 노드에 쓰기 트랜잭션이 수행된다.
- MASTER 노드는 데이터를 저장하고 트랜잭션에 대한 로그를 파일에 기록한다.
- SLAVE노드의 IO Thread는 Master노드의 로그 파일을 파일에 복사한다.
- Slave노드의 SQL Thread파일을 한줄씩 읽으며 데이터를 저장한다.
참고자료
https://nesoy.github.io/articles/2018-02/Database-Replication
https://jordy-torvalds.tistory.com/94
'Spring Cloud' 카테고리의 다른 글
Spring Cloud Gateway 설정 및 테스트 (0) | 2021.10.31 |
---|---|
API Gateway란? (0) | 2021.10.29 |
캐시 서버 (0) | 2021.10.27 |
VIP(Virtual IP)란? (0) | 2021.10.27 |
부하 분산(로드밸런싱)을 위한 네트워크 (0) | 2021.10.27 |