클러스터링은 여러 서버를 하나의 데이터베이스처럼 동작하도록 구성해서 고가용성과 부하 분산을 효과적으로 제공하는 방식입니다.
반면, 리플리케이션은 한 노드의 데이터를 다른 노드로 복제하여, 장애 복구나 읽기 성능 향상을 목적으로 사용됩니다.
클러스터링은 일반적으로 하나의 공유 스토리지를 사용하는 반면, 리플리케이션은 각 노드가 동일한 데이터 복사본을 개별적으로 보유합니다.
개념 정리
1. 클러스터링 (Clustering)
여러 DB 서버(노드)를 하나의 논리적 시스템처럼 동작하도록 구성한다.
노드 간 공유 스토리지를 사용하거나, 각 노드가 동일한 데이터에 접근한다.
주로 고가용성과 Failover를 목적으로 사용한다.
특징
하나의 노드에 장애가 발생해도 다른 노드가 서비스를 계속 제공한다.
일반적으로 쓰기 동기화가 이루어진다.
부하 분산(load balancing)이 가능하다.
2. 리플리케이션 (Replication)
데이터를 하나의 마스터 DB에서 하나 이상의 슬레이브 DB로 복제한다.
주로 읽기 성능 향상이나 백업/복구 목적으로 사용한다.
유형
Master-Slave: 마스터에서만 쓰기, 슬레이브는 읽기 전용
Master-Master: 양방향 복제, 충돌 관리가 필요하다.
Synchronous/Asynchronous: 데이터 동기화 시점에 따라 분류한다.
특징
슬레이브를 활용한 읽기 트래픽 분산이 가능하다.
장애 발생 시 슬레이브를 마스터로 승격해 복구가 가능하다.
네트워크 지연 또는 장애 발생 시 데이터 불일치 가능성이 존재한다.
클러스터링 vs 리플리케이션
항목
클러스터링
리플리케이션
목적
고가용성, 장애 조치
읽기 성능 향상, 백업
동기화 방식
보통 동기
동기 or 비동기
데이터 저장
공유 저장소 or 동기화된 데이터
각 노드에 복제본 저장
장애 대응
자동 Failover
슬레이브 승격 등 수동 전환 필요
꼬리 질문
클러스터링과 리플리케이션을 함께 사용하는 경우가 있을까요? 있다면 어떤 경우에 사용하면 좋을까요