목차

Galera Cluster DeadLock, Split Brain 문제

Galera Cluster를 사용할 때 Deadlock 문제는 심각한 장애(?)를 나타낸다. 구축하여 사용 중인 실사레에서 발생을 했다. 전자상거래 App에서 물건을 등록하고 드랍시키는 과정에서 DB에 Insert되면서 각 node간에 맺어진 Cluster에 저장된 정보를 나머지 서버에 rsync하여 무결성을 맞춰야한다….. 그런데 이게 빠른속도로 이루어지는것이 아니라서 부하가 크다면 DeadLock이 발생할 수 있다….

우리가 Galera Cluster를 사용하는 이유는 모든 node를 Write/Read하여 부하분산도하고 데이터의 일관성을 유지하기 위해서 사용하는게 제일큰 이유이지 않을까한다. 그런데 Galera Cluster에서 DeadLock이라는 안전장치가 우리에게는 매우 큰 걸림돌 역할을 한다.

따라서, 많은 해결방안을 찾아 시도해보았지만 DeadLock의 문제를 해결할 방법은 많지 않았다.

DeadLock 해결방안

1개의 node를 Write 전용으로 사용하고 나머지 node-n개는 Read 전용으로 구성하면 이상없이 DeadLock을 해결할 수 있다…. 만약 2개 이상의 node에서 Write를 진행하면 또 문제가 생기니 꼭 1대만 Write로 해야한다.

이게 무슨해결방안이냐? 생각할 수 있지만…. 어쩔 수 없다고 본다.. 이럴거면 기존의 Replication 방법으로 DB을 구축하는게 더 나을 수 있다고 생각을 한다.

Galera Cluster 사용 시 DeadLock 고려사항

Primary Key가 모든 테이블에 있어야 한다.

부하가 큰 서비스에는 사용을 고려해야한다.

Lock이 걸리면?

update, mysqldump 등 SQL문 사용 시 주의하자.. 너무많아서 어디서 DeadLock 걸릴지 추릴 수가 없다

Galera Cluster Split Brain

문서출처