관리 메뉴

JIE0025

DB 클러스터링, Active-Standby, Replication 본문

개발/Database

DB 클러스터링, Active-Standby, Replication

Kangjieun11 2024. 12. 31. 00:22
728x90

 

 

DB  클러스터링이란? 

>   단일 데이터베이스를 연결하는 둘이상의 서버/인스턴스를 결합하는 프로세스

 

아래를 보면  쿼리를 수행하는 서버가 있고, 실제 저장공간인 Database가 있다. 

서버를 둘 이상으로 늘려서  단일 Database에 연결하는것이다. 

https://code-lab1.com/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81/



클러스터링을 하는 이유 

 

만약 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://velog.io/@kwontae1313/DB-%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81DB-Clustering%EC%9D%B4%EB%9E%80

https://code-lab1.com/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EB%A7%81/

https://myalpaca.tistory.com/17