ETC

MariaDB와 MaxScale로 구성하는 고가용성 데이터베이스 아키텍처

Newbie Developer 2025. 6. 15. 14:44

기업에서 데이터베이스는 서비스의 핵심이며, 안정성과 확장성을 모두 만족해야 합니다. 오픈소스 관계형 데이터베이스인 MariaDB는 MySQL과의 호환성을 유지하면서도 지속적인 개선과 커뮤니티 지원을 받고 있습니다. 여기에 MaxScale이라는 프록시 레이어를 함께 사용하면 고가용성(HA), 로드밸런싱, 보안 등의 측면에서 훨씬 강력한 구성으로 확장할 수 있습니다.


✅ MariaDB란?

MariaDB는 MySQL의 원 개발자들이 오라클의 인수 이후 MySQL의 오픈소스 철학을 지키기 위해 만든 오픈소스 관계형 데이터베이스입니다. MySQL과 호환되며 다음과 같은 장점이 있습니다:

  • 완전한 오픈소스 라이선스 (GPL)
  • MySQL과 호환되는 CLI, 드라이버, 쿼리 문법
  • Galera Cluster, MaxScale 등 고급 확장 도구 지원
  • JSON, Dynamic Columns, GIS 등 최신 기능 내장

✅ MaxScale란?

MaxScale은 MariaDB Corporation에서 제공하는 Database Proxy(데이터베이스 프록시) 소프트웨어입니다. 단순한 라우터를 넘어서 쿼리 라우팅, 보안 필터링, 로드밸런싱, 복제 관리, Failover 자동화, Binlog 서비스까지 포함하는 지능형 프록시 역할을 수행합니다.

MaxScale의 핵심 역할

기능 설명
Query Routing 읽기/쓰기 분리, 특정 쿼리 라우팅
Load Balancing 슬레이브 노드 간 부하 분산
자동 Failover 마스터 장애 시 자동으로 새 마스터로 스위칭
보안 필터링 SQL firewall, masking, auditing 등
Binlog Replication CDC (Change Data Capture) 구성 가능
Connection Pooling 클라이언트 연결 최적화

🔧 MariaDB + MaxScale 아키텍처

        [ Application ]
               |
         [ MaxScale Router ]
          /               \
  [ Master ]         [ Slave 1 ]
                          \
                         [ Slave 2 ]
  • Application은 MaxScale에만 연결
  • MaxScale은 쓰기 요청을 마스터로, 읽기 요청은 슬레이브들로 분산
  • 마스터 장애 시 자동으로 새로운 마스터를 선출하고 라우팅

⚙️ 실습: MaxScale 설치 및 구성 요약

1. MariaDB Replication 구성

-- Master 설정
[mysqld]
server-id=1
log-bin=mysql-bin

-- Slave 설정
[mysqld]
server-id=2
relay-log=relay-bin

2. MaxScale 설치

# CentOS/RHEL 기준
sudo yum install maxscale

3. MaxScale 기본 설정 (maxscale.cnf)

[MaxScale]
threads=auto

# DB Backend 설정
[server1]
type=server
address=192.168.0.101
port=3306
protocol=MariaDBBackend

[server2]
type=server
address=192.168.0.102
port=3306
protocol=MariaDBBackend

# 모니터
[MariaDB-Monitor]
type=monitor
module=mariadbmon
servers=server1,server2
user=maxscale
password=maxscale_password
monitor_interval=1000

# 라우터
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2
user=maxscale
password=maxscale_password

[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=3306

4. MaxScale 실행

sudo systemctl start maxscale

📌 실무에서 활용되는 시나리오

1. 읽기/쓰기 분리(Read/Write Splitting)

애플리케이션에서 데이터베이스 연결을 하나만 유지하되, MaxScale이 쓰기 요청은 마스터로, 읽기 요청은 슬레이브로 자동 분산합니다. 트래픽이 많은 서비스에서 필수적입니다.

2. 자동 장애 조치(Failover)

마스터 장애가 감지되면 MaxScale은 자동으로 슬레이브 중 하나를 마스터로 승격하고 라우팅을 재구성합니다. 애플리케이션은 이를 인지하지 못할 정도로 빠르게 처리됩니다.

3. 감사 로깅 및 보안 마스킹

MaxScale에는 특정 필드를 마스킹하거나, 쿼리 패턴을 차단하는 기능(SQL Firewall)도 포함되어 있어 데이터 보안 규제가 있는 환경에서 매우 유용합니다.


🔒 운영 시 고려 사항

고려사항 설명
모니터링 MaxScale 자체 상태 및 백엔드 상태를 감시 (Prometheus 연동 가능)
HA 구성 MaxScale도 싱글 포인트가 될 수 있으므로 Keepalived 등으로 이중화 권장
연결 최적화 Connection Pooling을 적절히 활용하여 과도한 연결 방지
사용자 권한 MaxScale에서 사용하는 DB 계정에 최소 권한만 부여할 것
 

✅ 결론

MariaDB는 단독으로도 강력한 오픈소스 RDBMS이지만, MaxScale과 함께 구성하면 엔터프라이즈급 고가용성 아키텍처를 손쉽게 구현할 수 있습니다. 특히 다음과 같은 상황에 적합합니다:

  • 트래픽이 많은 읽기 중심 서비스
  • 무중단 장애 조치가 필요한 미션 크리티컬 서비스
  • SQL 보안 필터링, 데이터 감사 기능이 필요한 환경

MaxScale은 단순한 프록시를 넘어 지능형 라우터이자 보안 게이트이며, MariaDB 기반 아키텍처의 완성도를 높여주는 중요한 구성 요소입니다.