본문 바로가기

Spring Cloud

DB 클러스터링과 리플리케이션

클러스터(Cluster)

DB를 여러개의 서버가 나눠서 처리하도록 한다.

 

장점

서버 한 대가 죽어도 대비가 가능하다.

 

용도

  • 고가용성

DB의 가용성이란 DB가 동작하고 있는 시간과 정지한 시간의 비율이다. 

DB 시스템을 구성할 서버나 스토레지 장비를 각각 2대 이상으로 구성해서, 만의 하나 어느쪽인가에 장애가 발생했다고 하더라도 단 시간내에 운용을 재개할 수 있도록 한다.

  • 병렬처리
  • 성능향상

종류

  1. Active - Active Clustering

DB서버들이 각각 Active 상태로 둔다.

  • 서버 하나가 죽어도 다른 서버가 역할을 바로 수행하여 중단되는 시간이 없다.
  • 같이 사용되어 CPU와 메모리 이용률을 올릴 수 있다.
  • 저장소 하나를 공유하면 병목현상이 발생될 수 있다.
    • 병목현상 : 전체 시스템이 성능이나 용량이 하나의 구성요소르 인해 제한을 받는 현상

 

  1. 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

 

Database의 리플리케이션(Replication)이란?

 

nesoy.github.io

https://jordy-torvalds.tistory.com/94

 

Clustering vs Replication vs Sharding

이번 글에서는 샤딩과 클러스터링, 레플리케이션을 비교해보고 그 차이점을 알아보도록 하겠습니다. 아래 사진은 가장 기본적인 DB 구조 입니다. 위 사진은 DB 서버와 디스크 역할을 하는 DB 스토

jordy-torvalds.tistory.com

 

'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