관리 메뉴

피터의 개발이야기

[MySQL] Elasticsearch vs MySQL: 샤딩 구조와 Read-Only Replica 실무 활용법 본문

Database/MySQL

[MySQL] Elasticsearch vs MySQL: 샤딩 구조와 Read-Only Replica 실무 활용법

기록하는 백앤드개발자 2025. 8. 12. 23:31
반응형

 

ㅁ 들어가며

 대규모 트래픽을 처리하는 서비스나 데이터가 폭발적으로 늘어나는 환경에서는, 데이터베이스의 확장성과 가용성이 무엇보다 중요하다. 오늘은 MySQL 샤딩 환경에서 읽기 전용 복제본(Read-Only Replica)을 어떻게 활용할 수 있는지, 그 원리와 실무 적용법을 정리해보았다. 비슷하지만 다른 Elasticsearch의 샤딩 vs MySQL의 샤딩 차이도 정리해 보았다.

 

ㅁ Elasticsearch의 샤딩 vs MySQL의 샤딩 차이

구분 Elasticsearch MySQL
샤딩 방식 내장 자동 샤딩 – 인덱스를 여러 샤드(Primary Shard)로 분리하고, 클러스터가 자동으로 데이터 분배
수동/외부 샤딩 – MySQL 엔진 자체에는 샤딩 기능 없음, 애플리케이션 또는 미들웨어에서 분산
Replica 내장 – 샤드별 복제본(Replica Shard) 자동 관리
MySQL은 Replica = Replication(마스터-슬레이브) 개념. 샤딩과 별개
데이터 분배 기준 문서 ID 기반 해시, 범위 기반 등 자동 처리
직접 파티션 키 설계 필요 (예: 사용자 ID 해시, 날짜 범위 등)
쿼리 처리 분산 쿼리 엔진이 모든 샤드를 병렬 검색
각 샤드(MySQL 인스턴스)에 직접 쿼리 → 결과 합침(애플리케이션/프록시)
스케일 아웃 노드 추가 시 자동 리밸런싱
샤드 서버를 직접 추가하고 데이터 이동/분배 작업 필요

 

 

ㅁ 읽기 전용 복제본이란? 

읽기 전용 복제본은 마스터(Primary) 데이터베이스의 데이터를 실시간 또는 일정 주기로 복제(Replication)해 두는 데이터베이스 서버이다. 이 복제본에서는 SELECT(읽기) 쿼리만 허용되고, 데이터 변경(INSERT/UPDATE/DELETE)은 불가능하다.

이 방식의 핵심 목적은 다음과 같다.

  • 읽기 트래픽 분산: 여러 복제본에 SELECT 쿼리를 분산해 마스터의 부하를 줄임
  • 가용성 향상: 마스터에 장애가 발생해도 복제본으로 읽기 서비스 지속
  • 보고서/분석 쿼리 분리: 무거운 분석 쿼리를 복제본에서 실행해 운영 DB의 성능 저하 방지

 

ㅁ 샤딩과 복제, 어떻게 다를까?

  • 샤딩(Sharding): 데이터를 여러 DB 서버(샤드)에 분산 저장해 수평 확장(Scale-Out) → 데이터 용량/처리량 분산
  • 복제(Replication): 동일한 데이터를 여러 서버에 복사해 저장해 가용성 및 읽기 확장(Scale-Up) → 읽기 부하 분산, 장애 대비

실제 대규모 서비스에서는 샤딩+복제를 조합해 확장성과 가용성을 모두 확보한다.

예를 들어, 국제 사용자 정보를 저장하는 테이블이 존재한다. 하지만, 유럽에 있는 고객은 유럽 DB에 있고, 한국 고객은 한국DB에 분할 저장된다. 한국 DB를 읽기 부하 분산과 장애 대비를 위해 복제할 수 있다.

 

 샤딩 환경에서 읽기 전용 복제본 활용법

트래픽 분산

샤드마다 여러 개의 복제본을 두고,

  • 쓰기 쿼리는 마스터 샤드로,
  • 읽기 쿼리는 복제본 중 하나로 라운드로빈 또는 로드밸런싱해서 전송합니다.

덕분에 읽기 트래픽이 아무리 늘어나도 복제본만 추가하면 쉽게 대응할 수 있습니다.

 

장애 대응 및 가용성 향상

 마스터 샤드에 장애가 발생해도, 복제본을 통해 읽기 서비스는 계속 유지할 수 있다.
필요하다면 복제본 중 하나를 마스터로 승격(Promotion)해서 빠르게 서비스 복구도 가능하다.

 

리포트/분석 쿼리 분리

운영 DB의 성능에 영향을 주는 무거운 리포트, 집계, 분석 쿼리는 복제본에서만 실행하도록 분리한다.
이렇게 하면 운영 마스터 샤드의 성능 저하 없이, 대용량 분석도 무리 없이 처리할 수 있다.

 

 

ㅁ 실무 적용 예시

ㅇ 애플리케이션 라우팅

  • INSERT/UPDATE/DELETE → 마스터 샤드
  • SELECT → 복제본 샤드 중 하나 (로드밸런싱)

ㅇ 확장성

  • 읽기 트래픽이 늘어나면 복제본만 추가 배포

ㅇ 장애 복구

  • 마스터 장애 시 복제본을 마스터로 승격

 

ㅁ 마무리

MySQL 샤딩 환경에서 읽기 전용 복제본을 적극적으로 활용하면,
읽기 성능은 물론 가용성, 장애 대응, 분석 효율성까지 한 번에 잡을 수 있다.

 

ㅁ 함께 보면 좋은 사이트

MySQL 데이터베이스 파티셔닝(Partitioning) 과 샤딩(Sharding)

Sharded MySQL Cluster 도입 배경과 개발기 (부제: 우당탕탕 좌충우돌 개발기)

DB분산처리를 위한 sharding

반응형
Comments