DB 클러스터링, Active-Standby, Replication
✅ DB 클러스터링이란?
> 단일 데이터베이스를 연결하는 둘이상의 서버/인스턴스를 결합하는 프로세스
아래를 보면 쿼리를 수행하는 서버가 있고, 실제 저장공간인 Database가 있다.
서버를 둘 이상으로 늘려서 단일 Database에 연결하는것이다.
✅ 클러스터링을 하는 이유
만약 DB 서버가 2대가 된다면 어떻게 될까?
많은 양의 쿼리문을 더 빠르게 응답할 수 있을것이다.
또한 한개의 서버가 이상이 생기더라도 다른 서버가 존재 하기 때문에 정상적인 서비스를 운영할 수 있다.
단점
위 그림을 보면 두 서버가 둘다 Active하다.
이는 두개 서버가 동시에 같은 자원에 접근하려고 할수 있다는 의미가 된다. (병목현상)
병목현상이 발생하면 더 많은 비용이 발생할 수 있다.
>> Active Active 방식은 모든 서버가 활성화 된 상태라 병목현상이 더 심해질 수 있다.
이때 이 단점을 완화시키는 방법이 Active - Standby 클러스터링 이다.
✅ Active Standby Clustering
서버를 2가지 상태로 나누어 운영하는 방식이다.
Active 서버와 Standby 상태로 나눈다.
Active 서버에 문제가 발생하면 Stanby를 Active로 전환해 사용한다.
단점
>> Stanby 서버는 평소에 대기 상태이기 때문에 하드웨어 자원이 낭비 된다.
>> 전환하는 시간(페일오버) 동안 서비스가 잠시 중단될 수 있다.
>> Active여러대를 사용하여 부하를 줄이는 효율이 줄어든다. (부하 분산 기능 저하)
DB서버 둘다 Active하게 두는 방법은 없을까?
>> DB를 복제하면 해결이 가능하다!
✅ Replication
복제본 Database를 운영하는 것
Master DB Slave DB 에 각기 다른 명령어를 수행하라고 할 수 있다.
위 그림 예시를 보면 Slave db에는 Select 명령만,
Master DB에는 INSERT UPDATE DELETE 명령만을 주는것을 확인 할 수있다.
이 경우 부하 분산이 되고, DB 서버는 둘다 Active상태로 둘 수 있다.
만약 마스터 DB가 손상된다면 복제된 Slave DB를 통해 복구가 가능하다.
단점
>> Master DB 와 Slave DB간의 동기화 이슈로 일관성에 문제가 발생할 수 있다.
>> MasterDB에 쓰기 부하가 집중된다.
>> Master가 정상 작동하지 않을때 복구/ 대처가 어려워진다.
https://code-lab1.com/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81/