Jepsen, MariaDB Galera Cluster에서 데이터 손실 및 일관성 문제 발견
Jepsen, MariaDB Galera Cluster의 데이터 일관성(Data Consistency) 문제를 심층 분석
권장 설정에서도 커밋된 트랜잭션 손실(Committed Transaction Loss) 및 Stale Read 발생
Lost Update와 같은 이상 현상 발생, Snapshot Isolation 미지원 확인
MariaDB 측에 문제 제기, 문서 수정 및 설정 권고(Configuration Recommendation) 필요
권장 설정에서의 데이터 손실 문제
Jepsen의 분석에 따르면, MariaDB Galera Cluster는 권장 설정(innodb_flush_log_at_trx_commit = 0)에서 동시 노드 장애(Coordinated Process Crash) 발생 시 커밋된 트랜잭션이 손실되는 문제가 발생한다. 이는 디스크에 데이터 플러시(Flush)를 수행하기 전에 노드가 종료될 경우 데이터가 유실될 수 있기 때문이다. 데이터 격리 아키텍처(Data Isolation Architecture)의 근본적인 문제점을 드러낸다.
Stale Read 및 Lost Update 현상
Jepsen은 MariaDB Galera Cluster에서 Stale Read 및 Lost Update와 같은 일관성 문제를 발견했다. Stale Read는 트랜잭션이 커밋된 후에도 다른 트랜잭션에서 해당 변경 사항을 즉시 인식하지 못하는 현상이다. Lost Update는 여러 트랜잭션이 동일한 데이터를 동시에 수정할 때, 일부 변경 사항이 손실되는 문제로, 데이터 미저장 정책(Zero-Retention Policy)을 위반하는 심각한 문제로 이어진다.
Snapshot Isolation 미지원 및 격리 수준 문제
MariaDB Galera Cluster는 Snapshot Isolation을 지원하지 않아, Repeatable Read 이상의 격리 수준을 보장하지 못하는 것으로 나타났다. 이는 데이터베이스의 일관성을 유지하는 데 중요한 문제이며, 특히 금융 시스템과 같이 정확한 데이터 처리가 요구되는 환경에서 치명적인 결함으로 작용할 수 있다. 데이터 무결성(Data Integrity)을 보장하지 못하는 것이다.
MariaDB 문서의 불명확성 및 설정 권고
Jepsen은 MariaDB Galera Cluster의 문서가 격리 수준 및 일관성 모델에 대한 정보를 명확하게 제공하지 않는다고 지적했다. 또한, innodb_flush_log_at_trx_commit 설정을 0으로 설정하는 것이 안전하지 않다는 점을 명시해야 한다고 강조했다. GDPR 규제 준수(GDPR Compliance)와 같은 데이터 관련 규제를 준수하기 위해서는 정확한 정보 제공이 필수적이다.