갈레라 클러스터
: 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
'Database > Database' 카테고리의 다른 글
PostgreSQL VS MySQL (0) | 2024.07.07 |
---|---|
DRBD (Distributed Replicated Block Device) (1) | 2024.02.17 |
DB 과부하 방지 실전 팁 - 캐시 문제 해결 가이드 (0) | 2024.02.17 |
개발 시 데이터베이스 선택 가이드 (0) | 2024.01.22 |
분류로 보는 DBMS (0) | 2023.11.07 |