-
2024.05.05 Galera ISTTIL 2024. 5. 5. 14:45
State Transfers
신규 노드가 클러스터에 들어갈 때 노드 간 데이터 전송 방법 중 하나이다.
SST는 신규 노드가 클러스터에 들어오거나 write-set()을 저장하는 공간에 없는 글로벌 트랜잭션 아이디가 없을 때 발생한다.
IST는 donor노드에서 joiner에게 트랜잭션 단위로 누락된 것만 보내는 리플리케이션 방법이다.
donor 노드의 write-set 저장공간에 트랜잭션 번호가 있어야 한다는 점이 있다.
write-set 저장공간은 GCache라고 불리는데 크기가 클수록 많은 write-set을 저장할 수 있지만 DB크기보다 커버리면 SST보다 효율성이 떨어진다.
Gcache는 3가지의 저장공간이 있는데 순서대로 시도한다.
OS가 할당하는 메모리 공간(기본 비활성화), Ring-Buffer file (default 공간, 디스크 저장), 남는 디스크 공간(On-Demand Page Store) 순인데 각 순서대로 write-set을 저장하려고 한다. 만약 write-set이 너무 크다면 마지막 남는 디스크 공간에서도 실패하게 된다.
기본 128Mb 사이즈인데 회사 꺼를 보니 512, gcache.recover=yes로 설정되어 있다.
gcache.recover 설정이 yes로 되어있다면 노드 시작 시 IST기반으로 복구가 시도된다.
wsrep API
https://galeracluster.com/library/documentation/architecture.html
복제 플러그인 인터페이스이다. wsrep hooks와 dlopen으로 이루어져 있다. wsrep hooks는 db서버 엔진과 통합되며 write-set을 복제한다.
dlopen은 wsrep hooks에서 wsrep provider를 사용할 수 있게한다고하는데..
일반적인 복제 동작은 클러스터 안의 DB의 내용이 변경되면 hooks가 변경사항을 write-set으로 변경시킨다.
dlopen이 동작하는데 뭔 기능인 지는 모르겠음. 이후 galera replication plugin이 타 노드에 인증과 복제를 처리한다.
Certification-Based Replication
https://galeracluster.com/library/documentation/certification-based-replication.html
음 커밋이 실행되면 다른 노드로 전파된다고 한다.
갈레라는 논리적 동기 복제인데 데드락 시점은 어떻게 정할까.
commit하고 인증까지만 동기이고 테이블에 복제하는 것은 비동기로한다는 것 같다
'TIL' 카테고리의 다른 글
2024.05.07 Sharing Data Between Microservices (0) 2024.05.07 2024.05.06 Galera Crash Recovery (0) 2024.05.06 2024.05.04 Galeral Physical State Snapshot, Understanding the bug (0) 2024.05.04 2024.05.03 Galera SST (0) 2024.05.03 2024.05.02 Galera cluster streaming replication (0) 2024.05.02