[DB] 리플리케이션(Replication)이란? 클러스터링(Clustering)이란?

클러스터링(Clustering)이란?

 

클러스터링
[그림 1] 클러스터링의 예(Acitve-Active)

클러스터링은 동일한 데이터베이스를 여러 대의 서버가 관리하도록 클러스터를 구축하는 것을 뜻한다. 이러한 클러스터링은 Active-Active 방식과 Active-StandBy 방식이 있다.

 

클러스터링을 하는 이유

[그림 1]과 같이 모든 DB 서버가 Active 상태면 하나의 서버에 이상이 생기더라도 바로 다른 서버를 이용해 정상적인 서비스 운영이 가능하다.

 

또한 클러스터링을 이용하게 되면 기존에 하나의 서버에 몰리던 부하를 여러 곳으로 분산시킬 수 있다. 즉, 로드밸런싱(Load Balancing)이 가능해진다. 

 

클러스터링의 단점

하지만 클러스터링은 여러 대의 서버가 데이터베이스를 공유하므로 병목현상이 발생해 더 많은 비용이 발생할 수 있다. 특히, Active-Active 방식은 모든 서버가 활성화된 상태이므로 병목 현상이 더 심하게 발생할 수 있다. 이러한 단점을 완화시킬 수 있는 방식이 바로 Active-StandBy 방식이다.

 

Stand By 방식
[그림 2] Acitve-StandBy

Active-StandBy 방식은 Active 상태인 서버와 Stand-By 상태인 서버를 나누어 운영한다. 즉, Stand-By 상태의 서버는 말 그대로 준비 상태로 대기하다 Active 서버에 문제가 발생했을 경우 Active 상태로 전환되어 사용된다. 이러한 Active-Stand-By 방식은 병목현상을 해결할 수 있다.

 

하지만, 장애가 발생했을 경우 Stand-By 상태에서 Active 상태로 전환하는 시간동안 서비스를 사용할 수 없다는 단점도 존재한다. 또한, Active-Active는 여러 대의 서버를 온전히 사용하여 부하를 줄일 수 있는 장점이 있지만, Active-StandBy 방식은 부하 분산 기능의 효율이 줄어드는 단점이 있다.

 

이러한 클러스터링 방식은 DB 서버의 장애를 Fail-Over하는 방식이라고 할 수 있다. 하지만 만약 데이터베이스에서 장애가 발생한다면 어떻게 극복할 수 있을까? 이때 사용할 수 있는 방식 중 하나가 리플리케이션(Replication)이다.

 

 

리플리케이션(Replication)이란?

리플리케이션
[그림 1] 리플리케이션

 

데이터베이스 리플리케이션(Replication)이란 말 그대로 복제본 데이터베이스를 운용하는 것이다. 원본 데이터베이스를 Master, 복제된 데이터베이스를 Slave라고 부른다. Slave 데이터베이스는 Master 데이터베이스를 복제(Replication)하여 동일한 데이터를 가지게 된다.

 

리플리케이션을 하는 이유

이러한 리플리케이션을 사용하면 얻을 수 있는 이점이 있다. [그림 1]에서 볼 수 있듯이 Master 데이터베이스와 Slave 데이터베이스에 각기 다른 명령을 수행하도록 할 수 있다. Insert, Update, Delete 등의 작업은 Master 데이터베이스에서 처리하고, Select 등의 조회 작업은 Slave 데이터베이스에서 처리하도록 하면, 기존에 너무 많던 부하를 분산시킬 수 있다. 

 

또한 리플리케이션을 이용하면 데이터 안정성을 획득 할 수 있다. Master 데이터베이스의 데이터가 손상되었을지라도 Slave 데이터베이스에 복제된 데이터를 통하여 복구할 수 있다. 

 

 

리플리케이션의 단점

하지만 리플리케이션이 마냥 좋기만 한 것은 아니다. 리플리케이션이 이루어진 Slave 데이터베이스는 비동기(Asynchronous) 방식으로 Master 데이터베이스와 동기화 한다. 따라서 두 데이터베이스 간의 데이터 동기화가 보장되지 않아 일관성에 문제가 생길 수 있다. 또한, Master 데이터베이스가 정상 작동하지 않는다면 복구 및 대처가 까다롭다.

 

 


참고

 

1. https://dev.mysql.com/doc/refman/5.7/en/replication.html

2. https://jordy-torvalds.tistory.com/94

3. https://www.ndimensionz.com/2018/01/05/what-is-database-clustering-introduction-and-brief-explanation/#:~:text=Database%20Clustering%20is%20the%20process,a%20Data%20Cluster%20is%20needed.

반응형

댓글

Designed by JB FACTORY