-
2024.05.11 Galera cluster DDLTIL 2024. 5. 11. 14:22
Galera cluster DDL
갈레라에서 DDL은 어떻게 동작할까.
회사에서 이슈가 발생했을 때 관련 있는 SQL이 DDL이었다.
갈레라에서는 여러 가지 방법을 제공하는데 기본 설정은 TOI(Total Order Isolation)이라는 방법이다.
모든 노드에 쿼리가 실행되는 방법(STATEMENT 단위로 복제가 이뤄짐)이고 해당 쿼리가 끝날 때까지 트랜잭션이 처리되지 않는 문제가 있다.
추가로 DDL이전의 트랜잭션이 모두 끝나고 나서 DDL이 실행되는 점이 있다.
음 database가 다른 쿼리는 실행이 되는 건지는 모르겠다. 클러스터 구성 자체가 database단위로 할 수 없으니 server단위로 이뤄지는 거 같다.
write-set의 내용물을 보면 db명까지 있는거 보면 맞는 거 같다.
https://sakthismysqlblog.wordpress.com/2020/02/21/galera-replication-flow-architecture/
장애 발생 시 각 노드 process list에 create가 있었다. CREATE TABLE ... AS SELECT 같은 ddl이었는데 이게 오래 걸렸던 것이다.
ddl은 실행되면 롤백될 수 없으니 노드간에 실행 속도와 강제종료등으로 문제가 될 수 있었다.
음 이로 인해서 쓰기 요청이 쌓이고 thread가 부족해져서 읽기 불가 상태가 될 수 있는가?
근데 이 쿼리가 발생했을 때 바로 불능이된 것이 아니라 다음 update문 이후에 DB cloudwatch가 왔는데..
ROU(Rolling Schema Upgrade)은 TOI처럼 전부 트랜잭션 처리 불능상태로 만드는 것이 아닌 하나만 클러스터에서 제외시키고 쿼리 반영하고 다시 편입시키는 방법을 사용한다.
이거는 new테이블과 old테이블이 공존할 수 있다.
'TIL' 카테고리의 다른 글
2024.05.16 How to Count the Number of Online Users? (0) 2024.05.16 2024.05.15 galera cluster flow control (0) 2024.05.15 2024.05.09 gradle cache (0) 2024.05.09 2024.05.08 build server down, Share Data Between MSA (0) 2024.05.08 2024.05.07 Sharing Data Between Microservices (0) 2024.05.07