Chat 상우

Master와 Slave DB 패턴 개념 및 차이점 본문

DB

Master와 Slave DB 패턴 개념 및 차이점

chat-rilla 2023. 9. 22. 00:35

Master와 Slave DB 설명을 위한 처음사진

개념 정리

마스터와 슬레이브 데이터 베이스 아키텍처는 데이터 베이스를 복제하고 가용성을 향상하기 위한 방법이다. Master : 메인이 되는 작업을 수행하는 데이터 베이스로 마스터에서는 (Insert, update, delete)와 같은 작업을 수행하게 된다. Slave : 마스터 데이터 베이스를 복제하는 곳으로 데이터를 복사하고 유지하게 된다. 이는 주로 (Select)작업을 수행하기 위해서 사용하게 된다.


개요

우리가 어플리케이션을 사용하게 되면 보통 insert 보다 select 요청이 많다는 것을 알 수 있다. 이때 사용자가 증가함에 따라 해당 요청을 처리하기 위해 데이터베이스의 많은 트랜젝션을 처리해야 하는데 이 요청으로 데이터 베이스 서버가 다운되면 서비스를 이용할 수 없게 될 것이다. Master와 Slave는 이러한 문제를 해결하기 위해서 고안된 데이터 베이스 아키텍처로 Master에서는 등록과 수정 삭제와 같은 행위를 처리하고 이를 Slave에 복제를 하여 조회 요청을 Slave에서 처리를 할 수 있도록 트래픽을 분산하게 된다. 이로써 만약 Master 데이터 베이스가 다운이 되어도 슬레이스 서버를 마스터로 승격하여 서비스 복구를 빠르게 할 수 있어 고가용성이 증가된다. Mysql에서 이를 더 수월하게 할 수 있도록 MHA 프레임워크를 이용하게 된다.

MHA는 "Master High Availability Manager and tools for MySQL"의 약어로 이후 포스팅에서 다루어 보겠다.


Master Database

Master Database의 대한 아키텍처이다.

마스터 데이터베이스의 메인 데이터베이스 이다. 데이터 베이스의 값을 저장하고 수정하고 삭제하는 행위를 담당하게 된다. 또한 변경된 사항을 로그로 기록하여 관리하게 되며 해당 데이터 베이스는 모든 권한을 갖게 된다. 보통 아키텍처를 그리게 되면 하나의 마스터 데이터베이스에서 여러 슬레이브 데이터베이스로 동기화 하여 처리를 하게 된다.


Slave Database

Slave Database의 대한 아키텍처이다.

슬레이브라는 단어가 노예를 의미하는데 위 내용처럼 마스터 데이터 베이스에서 핵심 로직을 담당하게 된다면 이외 업무를 Slave에서 처리를 하게 되는 것이다. 슬레이브 데이터베이스는 마스터 데이터베이스의 값을 백업하고 있는 상태이다. 이후 조회 요청을 담당하게 되어 마스터 DB의 트래픽을 분산하게 된다. 슬레이브 데이터베이스는 보통 읽기 작업에 대한 권한을 가지고 있으며 쓰기와 같은 작업은 마스터 데이터 베이스에서 가지고 있게 된다.


Replication

Replication이 발생되는 부분의 대한 설명을 하는 이미지

데이터베이스 복제는 마스터에서 슬레이브로 데이터를 복사하게 되며 동기화하는 프로세스를 Replication 이라고 한다.

복사를 하는 방법에는 동기와 비동기 방식으로 이루어질 수 있는데 보통의 경우 비동기식 복제를 하게 된다. 이러한 방식으로 DB 아키텍처를 구성하게 된다면 요청 분산으로 인해 데이터 손실을 방지하게 되며 이후 마스터 데이터 베이스가 다운되어도 슬레이브로 대체를 할 수 있어 서비스의 가용성이 향상되게 된다.


마무리

Master와 Slave 아키텍처는 다음과 같은 이점이 있다.

  1. 가용성 증가 : 마스터 데이터베이스의 장애가 발생되면 데이터베이스를 통해 접근이 가능하기 때문에 시스템 다운 타임을 최소화 하는 것이 가능해진다.
  2. 읽기 성능 향상 : 읽기 작업을 슬레이브에 분산하고, 마스터 데이터베이스에서 쓰기 작업만 처리하게 되면 읽기 작업의 성능이 향상되게 된다.
  3. 백업 및 복구 : 슬레이브 데이터베이스를 백업으로 사용하여 데이터 손실을 방지하고 복구를 할 수 있게 된다.
  4. 로드 분산 : 읽기 작업을 여러 슬레이브 데이터베이스로 분산하여 시스템의 부하를 낮출 수 있다.

위와 같은 장점이 존재하지만 소규모 서비스에서는 오버스팩이기 때문에 어느정도 규모가 있는 서비스에서 사용하는 것이 좋다.