일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- IT
- 백준
- JPA
- react
- 자료구조
- redis
- MySQL
- 알고리즘
- Proxy
- Galera Cluster
- Heap
- 디자인 패턴
- design pattern
- Spring
- 자바
- mongoDB
- 컴퓨터구조
- Java
- 운영체제
- spring webflux
- OS
- Algorithm
- JavaScript
- MSA
- C
- 네트워크
- Data Structure
- 파이썬
- Kafka
- c언어
- Today
- Total
시냅스
Galera Cluster 의 Boostrap 과 구성 파일 이해 본문
Galera Cluster
https://liltdevs.tistory.com/201
현재 회사에서는 고가용성을 목적으로 Galera Cluster 를 사용하고 있습니다.
Galera Cluster 는 bootstrap(galera_new_cluster 로 실행시킨 node) 이
galera cluster 형성에 중요한 역할을 합니다.
아래에서는 그 설명과 관련 파일에 대해 알아보겠습니다.
Boostrap
Bootstrap Node 는 새로운 클러스터를 형성하고 초기화하는 역할을 합니다.
이 노드가 galera_new_cluster 라는 명령으로 실행되어야만 다른 노드들도 참여할 수 있습니다.
또한, Bootstrap 은 새로 참여하는 멤버에 대한 상태 관리를 하기도 합니다.
이때 Galera Cluster 는 seqno 라는 것으로 관리합니다.
seqno 로 마지막으로 인증한 트랜잭션의 Global Sequence Number 를 나타냅니다.
이 seqno 는 galera 구성 파일인 grastate.dat 에 적혀있습니다.
주요 구성 파일
- grastate.dat
- galera cluster 의 노드가 종료될 때 생성되는 파일입니다.
- version, uuid, seqno, sate_to_bootstrap 정보가 담겨있습니다.
- 이 파일을 통해 cluster 구성 정보를 관리합니다.
- galera.cache
- galera replication 에 대한 중간 상태 정보를 저장합니다.
- gvwstate.dat
- Node 들에 대한 cluster 정보가 담겨있습니다.
- 어떤 node 가 bootstrap 인지, 참여한 노드 수, 진행한 transaction 이 몇 건 인지 등입니다.
grastate.dat
grastate.dat 을 통해 replication 을 전파합니다.
즉, grastate.dat 파일이 네트워크 순단과 같은 이유로 올바르지 않다면 cluster 기동에 문제가 발생할 수 있습니다.
(grastate.dat 은 노드가 안전하게 종료되지 않는다면 기록되지 않을 수 있고, 올바르지 않은 데이터가 발생할 수 있습니다.)
- version : grastate.dat 파일의 버전입니다.
- uuid : cluster 구성을 위한 해당 노드의 uuid 입니다.
- seqno : 해당 노드가 마지막으로 인증한(데이터를 반영한) 트랜잭션의 Global Sequence Number 를 나타냅니다. 즉, 복제를 통해 어디까지 데이터 변경을 반영했는지를 나타내는 값입니다. (실행되고 있을 때에는 -1 로 표시됩니다.)
- safe_to_bootstrap : 이 값이 1로 설정되면, 해당 노드를 부트스트랩으로 시작할 수 있다는 것을 의미합니다.
가장 중요한 것은 seqno 입니다.
만약, 모든 클러스터가 정상적으로 데이터를 동기화 시켰고,
종료됐다면 모든 노드는 seqno 를 동일한 번호로 갖고 있을 것입니다.
하지만, 네트워크 순단이나 장애로 인해 cluster 가 종료되었다면
seqno 는 다른 노드들에 비해 낮은 값을 갖고 있을 확률이 높습니다.
Galera Cluster 가 정상적으로 구성되지 않을 수 있는 상황
만약, bootstrap 이 장애로 서버가 내려갔고 (이때 grastate.dat 에 정상적인 반영이 되지 않았고)
장애로 내려간 서버를 다시 bootstrap 으로 만들기 위해 모든 노드를 내린 후
bootstrap 을 galera_new_cluster 로 실행하면 실행되지 않을 가능성이 높습니다.
혹은, bootstrap 은 실행이 되어도 다른 cluster 가 구성되지 않을 확률이 높습니다.
bootstrap 은 위에서 살펴본 seqno 가 가장 높아야 하기 때문입니다. (상태 전송을 위해서!)
당연하게도, seqno 가 낮은 값을 갖는 bootstrap 이 선택된다면
오래된 상태 정보를 바탕으로 클러스터가 형성되어 데이터 불일치 문제가 발생할 수 있습니다.
이를 위해 Galera Cluster 는 boostrap 보다 seqno 가 높은 node는
cluster 로 구성시키지 않으면서 데이터 정합성을 지키는 것입니다.
따라서 만약 galera 재기동시 cluster 가 정상적으로 구성되지 않는다면,
현재 bootstrap 의 seqno 가 가장 높지 않은 node 일 수 있으므로
각 node 의 grastate.dat 을 참고하여 cluster 를 기동시켜야 할 것입니다.
위를 통해 Galera 구성 파일과 예시 상황에 대해 알아보았습니다.
조금이나마 도움이 되셨으면 좋겠습니다.
끝!
'데이터베이스 > MySQL' 카테고리의 다른 글
MariaDB 설치부터 Galera Cluster 구성까지 (0) | 2024.01.17 |
---|---|
Galera Cluster 상태 전송에 대한 이해 (0) | 2024.01.10 |
GTID 와 Galera Cluster (1) | 2023.10.09 |
검색기능 개발 (MySQL Full-Text Index, Search) (0) | 2023.08.03 |
페이징 성능 최적화 - No Offset 은 왜 빠를까? (0) | 2023.06.10 |