4. 데이터베이스 다중화

Chaeyun·2024년 1월 4일
0

DB

목록 보기
4/6

다중화의 종류

  • 클러스터링
  • 리플리케이션
  • Shared nothing

클러스터링

DB 서버를 다중화하는 것. 저장소는 다중화하지 않음.
데이터가 보존되는 저장소는 1개뿐이기에 동시성만 잘 제어하면 데이터 정합성을 신경 쓸 필요가 없음.
클러스터링

DB 서버가 2대가 있을 때 2대가 동시에 동작하는 경우를 Active-Active라고 하고 한대만 동작하고 다른 한대는 대기하는 것을 Active-Standby라고 한다.

다시 말해,

  • Active-Active : 클러스터를 구성하는 컴포넌트를 동시에 가동한다.
  • Active-Standby : 클러스터를 구성하는 컴포넌트 중 실제 가동하는 것은 Active, 남은 것은 대기(Standby)한다.

Active-Active는 시스템 다운 시간이 짧고, 성능이 좋다는 장점이 있다. 하지만 저장소가 병목이 되어 서버를 아무리 늘려도 성능 향상에 한계가 있다.

Active-Standby는 Standby 상태의 DB 서버는 사용되지 않다가 Active DB 서버에 장애가 일어날 때만 사용된다. 따라서 시스템 다운 시간이 있다.
(Standby 서버에서 보내는 Heartbeat 간격에 따라 시스템 다운 시간이 달라짐. 보통은 수 초에서 수십 초임.)
Active-Standby에는 hot-standbycold-standby가 있다.

  • cold-standby: 평소에는 standby DB가 작동하지 않다가 active DB가 다운되면 작동하는 것
  • hot-standby: standby DB가 평소에도 작동하는 것 (따라서 전환시간이 짧지만 비용이 높음.)

가용성과 성능이 좋은 순이자 비용순으로 정리하면 다음과 같다.
1. Active-Active
2. Active-Standby (hot-standby)
3. Active-Standby (cold-standby)

리플리케이션

DB 서버와 저장소를 모두 다중화하는 것.
DB 서버와 저장소를 묶어서 한 세트로 만들고 복수 개를 준비하느 것임.
리플리케이션

하나의 저장소가 부서져도 데이터를 잃지 않음. 따라서 물리적 거리를 두고 세트를 구성해 재해 대책으로 이용하기도 함.
대신 동기화를 통해 데이터를 계속해서 최신화해야 데이터 정합성을 유지할 수 있다.
이 동기화 주기에 따라 성능장애 시 소실되는 데이터 양 사이에 트레이드 오프가 생김.
예를 들어, 1일마다 데이터를 갱신 시 성능은 좋겠지만 장애 발생시 최대 1일 분의 데이터가 소실됨.

MySQL에서 동기화하는 측(Active) 데이터베이스를 '마스터', 동기화되는 측(Standby) 데이터베이스를 '슬레이브'라고 부름. 마스터 슬레이브 방식!

Shared Nothing

Active-Active 방식 클러스터링에서 복수의 DB 서버가 하나의 저장소를 공유하는 형태를 설명했다. 이처럼 복수의 서버가 1대의 디스크를 사용하는 구성Shared Disk라고 함.

Shared Disk Shared Disk

이 구성은 저장소의 병목 때문에 DB서버를 아무리 늘려도 처리율(단위 시간당 처리능력)이 무한으로 증가하지 않고 한계점에 도달한다.

그래서 Shared Nothing이 고안됨.

Shared Nothing Shared Nothing

Shared Nothing은 DB 서버와 저장소의 세트를 만들고 네트워크 이외의 자원을 공유하지 않는 것임.
저장소가 병목이 되지 않고 병렬적으로 처리가 가능하기 때문에 성능이 선형적으로 증가함.

Google에서 자사 개발한 Shraed Nothing 구조를 샤딩(Sharding)이라 부름.

단점

  1. 이 구조에서는 저장소를 공유하지 않기 때문에 각각의 DB 서버가 동일한 1개의 데이터에 액세스할 수 없음. 따라서 각 DB 서버가 접근할 수 있는 데이터가 정해져 있음.
  2. 이로 인해 전체 데이터에 대한 통계와 같이 각 세트의 데이터 접근이 모두 필요한 경우 이를 모아 집계,정리하는 정리 서버가 필요함.
  3. 하나의 DB 서버가 다운되면 해당 세트 저장소 데이터에 접근이 불가능함. (이를 대처하기 위해 다른 DB 서버가 이어 받아 처리하는 Covering 구성이 있음.)

0개의 댓글