320x100
320x100

갈레라 클러스터

: MariaDB/MySQL에서 사용되는 동기 방식의 복제구조를 사용하는 멀티마스터 RDB 클러스터

: 논리적으로는 완전 동기지만 실제 write와 tablespace에 commit하는 과정이 별개이고 각 노드 간에는 비동기로 동작

: 이를 virtually synchronous replication이라고 부름

: Master Slave 구성의 Replication과는 다르게 모든 노드에서 Write가 가능 (그러나 데드락 문제로 인해 Write 노드는 반드시 하나여야함)

 

- 사용하는 이유

: 분산된 DB를 동기화 하기 위함

 

 

 

 

 

작동 원리

- 동기 복제 방식

: Write-Set Replication API (wsrep api)를 통해 각 노드와 데이터를 동기화

: wsrep api는 DBMS 간 복제를 위한 인터페이스이고, 실제 구현부는 galera replication plugin에서 수행

: 각 노드에 쓰거나 write나 update가 발생할 경우 노드 간에 데이터를 복제하고 업데이트 내용을 GCache라는 영역에 저장

 

- 인증 기반 복제 (Certification-Based Replication)

: 노드에 트랜잭션이 발생한 후에 커밋을 하게되면 바로 디스크에 쓰지 않고 다른 노드로 복제요청을 함

: 이후 모든 노드들이 GTID 기반 인증을 한 후에 디스크에 데이터를 쓰게됨

: 인증과정에서 PK 기반으로 writeset에 무결성 검사를 하기 때문에 반드시 PK가 필요 

: 이때 인증이 실패하게되면 최초 요청을 받은 노드에 데드락 발생

 

- 최적화 실행 (Optimistic Execution)

: Optimistic Lock과 비슷하게 실제 인증 전까지 충돌이 나지 않는다고 가정하고 인증 기반 복제를 진행

 

- First Commiter Win 정책

: 다른 노드 간 데드락이 발생할 경우 가장 먼저 commit한 노드의 데이터를 받아들이고 이후에 커밋된 노드엔 데드락 발생

 

 

 

 

 

장점

: 모든 노드의 데이터를 일관성있게 저장할 수 있다 (마스터-슬레이브 형태의 비동기 복제보다)

: 모든 노드가 Write가 가능하기 때문에 모든 노드가 죽기전까지는 장애에 대응하기 용이

 

 

 

단점

: 동기식 복제 구조 때문에 write가 많이 발생하면 다른 아키텍처보다 성능이 떨어지며 scale-out하기에도 한계가 존재

: 인증에 실패할 경우 발생하는 데드락도 치명적

 

 

 

 

 

 

 

 

Reference

 

Galera Cluster에 대해 알아보자

도입 현재 다니는 회사에서 RDBMS로 MariaDB를 사용하고 있습니다. 서비스가 규모가 있다보니 단일 DB로는 버틸 수 없기 때문에 Galera Cluster로 클러스터를 구성하여 사용하고있습니다. 오늘은 MariaDB/M

sightstudio.tistory.com

 

300x250
728x90