📌 DB 서버구성
- DB의 사용성에 문제가 생기지 않도록 하는 고가용성 확보를 위한 방안
- 클러스터링
- 1대의 스토리지와 여러대의 서버 운영
- active/active, active/stanby
- active/active : 서버 두 대 모두 운영, 로드밸런싱 해줄 수 있는 로드 밸런서가 필요
- active/stanby : 한 서버 운영, 다른 서버는 대기하고 있다가 가동 중인 서버가 다운되면 active로 동작
- ex) 스토리지 하나에 프로세스 여러 개 두고, 각 프로세스에서 입력을 받음
- 레플리카
- n개의 (스토리지, 서버) 를 운영
- ex) 스토리지 하나에 프로세스 하나, 스토리지 하나에 프로세스 하나, ... 로 처리됨
- 샤딩
- 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법
- 대규모 테이블을 나눠서 저장해둘 때 사용
- 클러스터링
✅ 클러스터링
- DB를 한 대만 운영 할 경우에 문제점은 DB 서버가 죽으면 관련된 서비스가 전체가 중단
- 동일한 DB 서버를 두 대를 묶고 두 DB 서버
- active/active
- active/stanby
- 프록시 로드 밸런서를 VM 머신 앞 단에 배치(Vip : Virtual IP)하여 부하를 분산 => 로드밸런싱
- 로드밸런서는 라운드 로빈 방식을 사용함
✅ 레플리카
- 데이터베이스 스토리지 유실에 대한 대안으로 스토리지 까지 복제
- 아래와 같이 복제만 하는 레플리카 케이스와 복제를 하면서 동시에 slave서버는 select 용도
- 재해복구를 위한 DR센터 운영
- 왼쪽 그림 : 한 대의 컴퓨터를 가지고 삭제, 조회, 갱신 다른 서버는 백업만
- 오른쪽 그림 : 한 대의 컴퓨터를 가지고 삭제, 조회, 다른 서버는 백업 + 조회 => 부하 분산
✅ 샤딩
- 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장
- 대규모 시스템에서 성능향상을 위해 사용
- 데이터베이스와 스토리지를 n개로 분리하여 데이터 분산 저장
- 고가용성과는 거리가 멀다
- 샤딩전략 : 다수 DB 분산 전략
- Hash sharding
- 해쉬 함수 값을 기준으로 분류
- DB 서버가 추가 될 경우 해쉬 함수가 변경
- Dynamic sharding
- 범위를 지정해 분류
- 목적지 shard와 id range만을 지정하므로, 서버 추가시 용이
✅ HA (High Availablity)
HA 하자 ! = 서버 N대 쓰자 !
- HA(High Availablity)는 고가용성을 뜻하는 것으로 장애없는 지속가능한 서비스를 지칭하고, 서버의 다중화 구성을 의미
- MySQL 프록시 및 로드 밸런서
- 사용자의 요청을 분산처리 하는 것이 로드 밸런서(부하분산)
- 프록시는 사용자의 요청을 서버에 "대리"해서 전달하는것(리버스 프록시라고도 함)
- 포워드 프록시 : Server -> HAProxy -> Client
- 포워드 프록시 대표적인 예 : VPN
- 서버 입장에서 요청이 들어오면 리버스, 요청이 나가면 포워드
- (리버스) 프록시로 많이 사용되는 것 : nginx
- HA 구성
- haproxy는 mysql 멀티서버 구성에서 많이 사용하는 프로그램
- sudo apt-get install haproxy
- haproxy는 mysql 멀티서버 구성에서 많이 사용하는 프로그램
'Back-End 공부 > Database' 카테고리의 다른 글
[Database] 정규화란? 정규화 예시(1NF, 2NF, 3NF, BCNF) (1) | 2023.11.24 |
---|---|
[Database] 데이터 모델링(개념적, 논리적, 물리적) (1) | 2023.11.24 |
[Database] DB Dump로 백업, 복구하기 (0) | 2023.11.22 |
[Database] 사용자 관리, 사용자 권한부여(GRANT, REVOKE) (0) | 2023.11.22 |
[Database] DB 동시성 이슈(Dirty Read, Non-Repeatable Read, Phantom Read) (2) | 2023.11.22 |