[MariaDB] DB 엔진과 고가용성 구성

이지연·2025년 11월 28일

개요

MariaDB(MySQL)에서 주로 사용하는 DB 엔진과 서버 고가용성을 위한 구성 방법들을 정리했음.


1. 주요 DB 엔진 종류

InnoDB

  • ACID 트랜잭션 지원 엔진으로 안정성과 무결성 보장
  • 트랜잭션 명령어(COMMIT, ROLLBACK 등)를 지원
  • 높은 동시성 환경과 데이터 무결성이 중요한 시스템에 적합

MyISAM

  • 트랜잭션을 지원하지 않는 비트랜잭션 엔진
  • 행 잠금(lock)이 없어 읽기 작업이 많은 환경에 적합
  • 빠른 읽기 성능을 제공

엔진 종류는 다음 명령어로 확인 가능함.

SHOW ENGINES;

기본 엔진 변경은 DB 차원(my.ini 등 설정 파일)이나 테이블 차원에서 가능함.

ALTER TABLE author ENGINE = MyISAM;

  • 핵심 엔진인 InnoDB와 myisam 확인, InnoDB가 기본값으로 설정되어있다.

2. DB 서버 고가용성(HA) 구성

서비스 중단 방지를 위해 장애에 대비하는 구성 방식들임.

클러스터링

  • 하나의 스토리지(디스크)를 여러 서버가 공유하는 구조
  • 로드밸런스(L.B)를 사용하여 적절하게 여러개의 서버에 라우팅을 해주는 방식
  • active/active 혹은 active/standby 방식으로 운영 가능
  • 하나의 DB 서버 장애 시 다른 서버로 신속 전환
    • active/active : 두 대를 다 써서 서버가 신속하게 동작할 때 취하는 방식
    • active/standby : L.B를 쓰지 않고 메인이 죽으면 예비자원을 사용 (자원 save)

레플리카

  • 여러 서버와 스토리지를 복제하여 데이터 유실 대비
  • 슬레이브는 복제만 하거나 조회용으로 활용 가능
  • 재해복구용 DR 센터 운영에 활용

    클러스터링이랑 뭐가 다른데? 클러스터링은 스토리지엔 문제가 없을것이다 라는 전제를 까는거고 레플리카는 스토리지까지 문제가 될 수 있다고 생각하여 대비해놓는 방식인 것

  • 레플리카로 두개의 서버+스토리지를 관리하고 단방향으로 거의 실시간 복제(master → slave/worker)
  • 이건 레플리카 서버+스토리지도 함께 쓰는건데 복제 데이터는 조회용 목적으로만 사용(괜히 돈 쓴 느낌 줄여주고 부하분산도 해줌)

샤딩

  • 큰 데이터를 여러 DB 서버에 분산 저장하는 방법
  • 같은 테이블 스키마를 가진 데이터가 다수 DB에 분산됨
  • 성능 향상과 확장성 확보에 효과적
  • 해시 기반과 다이내믹 샤딩 등 전략에 따라 분산 방식이 다름

3. HA 구성 관련 기술

  • HA(High Availability)는 장애 없이 지속되는 서비스 의미
  • 다중 서버 구성으로 고가용성 확보
  • MySQL 프록시 및 로드 밸런서 사용 시 사용자 요청을 분산 처리

로드 밸런서는 부하 분산 역할
프록시는 서버에 요청을 대리 전달하는 기능(리버스 프록시)

kp) 고가용성 == HA == 서버의 다중화


마치며

MariaDB(MySQL)는 환경에 따라 적합한 스토리지 엔진을 선택할 수 있고, 장애 없이 안정적인 서비스를 위해 클러스터링, 레플리카, 샤딩 등 다양한 고가용성 아키텍처를 구축할 수 있음. 서비스 특성과 데이터 규모에 맞는 구성이 중요하다.

profile
Eazy하게

1개의 댓글

comment-user-thumbnail
2025년 12월 11일

카카오 아웃 ㅋㅋ
낡고 냄새나는 클러스터링 사용해서 이렇게되었네요 수고하세요

답글 달기