[MariaDB] 클러스터링, 레플리카, 샤딩

심재혁·2023년 12월 3일
0
post-thumbnail

DB 서버 구성

  • DB의 사용성에 문제가 생기지 않도록 하는 고가용성 확보를 위한 방안
  • 클러스터링
    • 1대의 스토리지와 여러대의 서버 운영
    • active/active, active/stanby
  • 레플리카
    • n개의 (스토리지, 서버) 를 운영
  • 샤딩
    • 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법

클러스터링

  • DB를 한 대만 운영 할 경우에 문제점은 DB 서버가 죽으면 관련된 서비스가 전체가 중단
  • 동일한 DB 서버를 두 대를 묶고 두 DB 서버
    • active/active
      • 앞에서 로드밸런싱을 해줄 수 있는 프로그램이 필요하다.
      • 로드밸런싱으로 주로 사용하는 것이 프록시
      • Vip(Vitrual IP)
        • 데이터를 분산해서 저장할 때, 직접 저장공간의 IP로 연결해서 넣으면 분배되지않고 한 곳에만 저장되므로 저장공간의 IP 앞에 가상 ip주소를 만들어 먼저 가상 ip로 데이터를 받고 그 후에 데이터를 분산하여 저장한다.
    • active/stanby
      • 하나가 실행중이고 하나는 대기중인 상태
      • 저장공간 앞에 vip를 두어 한쪽에만 데이터를 저장하다가 DB서버가 죽으면 stanby하고 있던 DB서버를 바로 실행시킨다.

레플리카

  • 데이터베이스 스토리지 유실에 대한 대안으로 스토리지 까지 복제
  • 아래와 같이 복제만 하는 레플리카 케이스와 복제를 하면서 동시에 slave서버는 select 용도
  • 재해복구를 위한 DR센터 운영

  • 왼쪽 사진은 데이터 입력, 수정, 삭제, 조회를 하나의 DB만을 쓰면서 다른 하나는 복제의 용도로만 사용한다.
  • 오른쪽 사진은 입력, 수정, 삭제를 원본 서버에서 진행하고 조회만 복제 DB서버에서 하도록해 일을 분산시켜 부하를 분산시킨다.

샤딩

  • 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장
  • 대규모 시스템에서 성능향상을 위해 사용
  • 데이터베이스와 스토리지를 n개로 분리하여 데이터 분산 저장

샤딩 전략

  • Hash sharding
    • DB 서버가 추가 될 경우 해쉬 함수가 변경
  • Dynamic sharding
    • 목적지 shard와 id range만을 지정하므로, 서버 추가시 용이

HA구성

  • HA(High Availablity)는 고가용성을 뜻하는 것으로 장애없는 지속가능한 서비스를 지칭하고, 서버의 다중화 구성을 의미
  • MySQL 프록시 및 로드 밸런서
    • 사용자의 요청을 분산처리 하는 것이 로드 밸런서(부하분산)
    • 프록시는 사용자의 요청을 서버에 "대리"해서 전달하는것(리버스 프록시라고도 함)
    • 다중화 구성을 하면 목적지가 어디인지 이슈가 항상 발생하니 주소를 미리 지정하여 혼선이 생기지 않도록 하는 것
    • HAProxy: 엔드포인트, 주소, ip와 포트를 설정한다.
    • ha -> 프록시(대리인), 로드밸런서(라운드로빈) -> nginx, reverso proxy 용도로 많이 사용.

0개의 댓글