DB 서버를 다중화하는 것. 저장소는 다중화하지 않음.
데이터가 보존되는 저장소는 1개뿐이기에 동시성만 잘 제어하면 데이터 정합성을 신경 쓸 필요가 없음.
DB 서버가 2대가 있을 때 2대가 동시에 동작하는 경우를 Active-Active라고 하고 한대만 동작하고 다른 한대는 대기하는 것을 Active-Standby라고 한다.
다시 말해,
Active-Active는 시스템 다운 시간이 짧고, 성능이 좋다는 장점이 있다. 하지만 저장소가 병목이 되어 서버를 아무리 늘려도 성능 향상에 한계가 있다.
Active-Standby는 Standby 상태의 DB 서버는 사용되지 않다가 Active DB 서버에 장애가 일어날 때만 사용된다. 따라서 시스템 다운 시간이 있다.
(Standby 서버에서 보내는 Heartbeat 간격에 따라 시스템 다운 시간이 달라짐. 보통은 수 초에서 수십 초임.)
Active-Standby에는 hot-standby와 cold-standby가 있다.
가용성과 성능이 좋은 순이자 비용순으로 정리하면 다음과 같다.
1. Active-Active
2. Active-Standby (hot-standby)
3. Active-Standby (cold-standby)
DB 서버와 저장소를 모두 다중화하는 것.
DB 서버와 저장소를 묶어서 한 세트로 만들고 복수 개를 준비하느 것임.
하나의 저장소가 부서져도 데이터를 잃지 않음. 따라서 물리적 거리를 두고 세트를 구성해 재해 대책으로 이용하기도 함.
대신 동기화를 통해 데이터를 계속해서 최신화해야 데이터 정합성을 유지할 수 있다.
이 동기화 주기에 따라 성능과 장애 시 소실되는 데이터 양 사이에 트레이드 오프가 생김.
예를 들어, 1일마다 데이터를 갱신 시 성능은 좋겠지만 장애 발생시 최대 1일 분의 데이터가 소실됨.
MySQL에서 동기화하는 측(Active) 데이터베이스를 '마스터', 동기화되는 측(Standby) 데이터베이스를 '슬레이브'라고 부름. 마스터 슬레이브 방식!
Active-Active 방식 클러스터링에서 복수의 DB 서버가 하나의 저장소를 공유하는 형태를 설명했다. 이처럼 복수의 서버가 1대의 디스크를 사용하는 구성을 Shared Disk라고 함.
이 구성은 저장소의 병목 때문에 DB서버를 아무리 늘려도 처리율(단위 시간당 처리능력)이 무한으로 증가하지 않고 한계점에 도달한다.
그래서 Shared Nothing이 고안됨.
Shared Nothing은 DB 서버와 저장소의 세트를 만들고 네트워크 이외의 자원을 공유하지 않는 것임.
저장소가 병목이 되지 않고 병렬적으로 처리가 가능하기 때문에 성능이 선형적으로 증가함.
Google에서 자사 개발한 Shraed Nothing 구조를 샤딩(Sharding)이라 부름.