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

DB 서버 구성
- DB의 사용성에 문제가 생기지 않도록 하는 고가용성 확보를 위한 방안
- 클러스터링
- 1대의 스토리지와 여러대의 서버 운영
- active/active, active/stanby
- 레플리카
- 샤딩
- 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
클러스터링
- 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
- Dynamic sharding
- 목적지 shard와 id range만을 지정하므로, 서버 추가시 용이
HA구성
- HA(High Availablity)는 고가용성을 뜻하는 것으로 장애없는 지속가능한 서비스를 지칭하고, 서버의 다중화 구성을 의미
- MySQL 프록시 및 로드 밸런서
- 사용자의 요청을 분산처리 하는 것이 로드 밸런서(부하분산)
- 프록시는 사용자의 요청을 서버에 "대리"해서 전달하는것(리버스 프록시라고도 함)
- 다중화 구성을 하면 목적지가 어디인지 이슈가 항상 발생하니 주소를 미리 지정하여 혼선이 생기지 않도록 하는 것
- HAProxy: 엔드포인트, 주소, ip와 포트를 설정한다.
- ha -> 프록시(대리인), 로드밸런서(라운드로빈) -> nginx, reverso proxy 용도로 많이 사용.