[MariaDB] Galera Cluster 사용 전 확인해야 할 주요 제약사항
Galera Cluster는 높은 데이터 일관성과 가용성을 제공하지만, 몇 가지 주의해야 할 제한사항이 존재합니다. 안정적인 클러스터 운영을 위해 반드시 알고 넘어가야 할 부분을 정리했습니다.
1. InnoDB 스토리지 엔진만 지원
Galera Cluster는 InnoDB 전용입니다. 트랜잭션 지원, 행 단위 잠금, 데이터 무결성 보장 등 Galera가 요구하는 기능을 InnoDB만이 충족할 수 있기 때문입니다.
MyISAM 같은 다른 스토리지 엔진은 트랜잭션을 지원하지 않아 Galera 환경에서 복제가 불안정할 수 있습니다. 특히 시스템 데이터베이스(mysql
DB)는 MyISAM 기반이라 직접적인 데이터 쓰기(INSERT
, UPDATE
)는 복제되지 않습니다. 대신 CREATE USER
와 같은 DDL 명령어는 복제됩니다.
MyISAM 복제를 실험적으로 지원하는 wsrep_replicate_myisam
설정도 있지만, 실무에서는 사용을 권장하지 않습니다.
InnoDB, 왜 중요할까요?
InnoDB는 MySQL과 MariaDB에서 기본으로 사용하는 스토리지 엔진입니다. 주요 특징은 다음과 같습니다:
- 트랜잭션 지원: 데이터 작업을 안전하게 처리해 일관성과 무결성을 보장합니다.
- 행(Row) 단위 잠금: 데이터 수정 시 테이블 전체가 아닌 특정 행에만 잠금을 걸어 높은 동시성을 제공합니다.
- 참조 무결성(FOREIGN KEY) 지원: 테이블 간 관계를 강제해 데이터 정합성을 유지합니다.
- 크래시 복구: 장애 발생 시 로그 파일을 통해 데이터 복구가 가능합니다.
이런 특성 덕분에 Galera Cluster의 동기식 복제 및 충돌 감지 메커니즘과 완벽하게 호환됩니다.
참고: MySQL/MariaDB는 InnoDB 외에도 다양한 스토리지 엔진을 제공합니다. MyISAM, MEMORY, CSV, ARCHIVE, Aria, ColumnStore, MyRocks 등이 있지만, 대부분의 실무 환경에서는 InnoDB 사용이 기본입니다.
2. 기본 키(Primary Key) 필수
모든 테이블에는 Primary Key가 필요합니다. 복합 Primary Key도 가능합니다.
Primary Key가 없는 테이블은:
DELETE
연산이 지원되지 않으며,- 노드마다
SELECT
결과 순서가 달라질 수 있어 정렬 불일치 문제가 발생할 수 있습니다.
3. 트랜잭션 크기 제한
Galera Cluster는 트랜잭션을 메모리 내 버퍼로 처리합니다. 이 때문에 초대형 트랜잭션(예: LOAD DATA
)은 노드 성능에 부정적 영향을 줄 수 있습니다.
기본 설정된 제한은 다음과 같습니다:
- 최대 행 수(
wsrep_max_ws_rows
): 128,000 rows - 최대 트랜잭션 크기(
wsrep_max_ws_size
): 2GB
필요에 따라 조정할 수 있지만, 대형 트랜잭션을 처리할 때는 주의가 필요합니다. 향후 트랜잭션 분할(Fragmentation) 기능도 추가될 예정입니다.
핵심 요약
- Galera Cluster는 InnoDB 전용이며, 다른 스토리지 엔진은 지원하지 않거나 제한적입니다.
- 모든 테이블에는 Primary Key가 필요합니다. 없으면 일부 연산이 제한됩니다.
- 초대형 트랜잭션은 성능 저하를 일으킬 수 있어 주의해야 합니다.
클러스터 운영 전, 이 기본 제한사항을 반드시 숙지하고 준비하세요.
참고
https://mariadb.com/kb/en/mariadb-galera-cluster-known-limitations/
댓글
댓글 쓰기