| Version 1 (modified by , 4 weeks ago) ( diff ) |
|---|
MariaDB Galera
MariaDB 10.1부터 지원. '걸레라'라고 발음하는 듯.
장점
MariaDB 복제는 마스터/슬레이브 방식으로 구성한다. 마스터 노드에서 데이터 변경이 이뤄지면 변경 사항이 슬레이브 노드로 전달되는 방식이다.
마스터/슬레이브 구조에서 데이터 변경 작업은 마스터 노드에서만 가능하다. 슬레이브 노드에서 쓰기 작업을 하면 데이터 동기화가 깨진다.
MariaDB 복제의 가장 큰 단점은 이와 같은 마스터/슬레이브 구조 때문에 읽기와 쓰기를 하는 노드를 분리해서 코딩해야 한다는 점이다.
그 외에도 마스터에 장애가 발생하면 슬레이브 노드 중 하나를 마스터로 승격하고 다시 동기화를 해야 하는 번거로움이 있다. MariaDB 10.0부터는 Global Transaction ID (GTID)를 이용한 복제를 지원하기 때문에 동기화를 할 때의 번거로움이 조금 줄어들기는 했다.
반면에 Galera는 마스터/슬레이브의 구분이 없다. 모든 노드에서 읽기/쓰기가 가능하다. 따라서
- (개발이 간단함) 읽기와 쓰기 노드를 분리해서 코딩할 필요가 없어진다.
- (장애 처리가 간단함) 특정 노드에 장애가 발생하더라도 그 노드를 제외하기만 하면 별 문제 없이 서비스가 돌아간다.
단점
MariaDB 복제는 마스터에 변경을 먼저 하고 슬레이브에 변경이 전달되는데 비해 (비동기 방식)
Galera는 어느 노드에 데이터 변경을 요청하면 다른 모든 노드까지 데이터 변경이 이루어져야 데이터 변경이 완료된다. (동기 방식)
동기 방식이 장점일 수도 있지만 경험상 단점으로 작용하는 경우가 더 많다.
- (쓰기 성능 저하) 일단 쓰기 작업이 완료되는 시간이 오래 걸린다. 모든 노드를 다 변경해야하기 때문이다.
- (연쇄적인 장애) 어느 한 노드에 장애가 생겨 동기화하는데 시간이 오래 걸린다면 다른 노드에까지 연쇄적으로 영향을 미칠 수 있다.
- (확장의 한계) 전체적인 노드 수가 늘어나면 늘어날수록 위와 같은 단점이 커지게 된다. 따라서 아주 대규모 환경에서는 적용하기 힘들다.
