상세 컨텐츠

본문 제목

[데이터베이스] 리플리케이션(Replication) / 클러스터링(Clustering)

DATABASE

by jeonghojin 2023. 4. 13. 22:14

본문

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

 
Mysql의 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰기 작업만을 처리하며 Slave Node는 읽기 작업만을 처리한다. 리플리케이션은 비동기 방식으로 노드들 간의 데이터를 동기화한다.
 

  • 2대 이상의 DBMS를 나눠서 데이터를 저장하는 방식
  • 사용하기 위한 최소 구성 Master / Slave 구성
  • Master 역할 : 웹 서버로부터 데이터 등록/수정/삭제 요청시 바이너리로그(BinaryLog)를 생성하여 Slave서버로 전달.
  • Slave 역할 : Master로부터 전달받은 (BinaryLog)를 데이터로 반영
  • 쉽게 말해 DB 이중화, 복제
https://mangkyu.tistory.com/97

처리방식 :

  • 데이터 등록 / 수정 / 삭제 요청
  • Master 노드 트랜잭션 수행
  • Master 노드는 데이터를 저장 / 수정 / 삭제 후, 트랜잭션에 대한 로그를 파일에 기록한다.(Binary Log)
  • Slave 노드의 IO Thread는 Master 노드의 로그 파일(Binary Log)를 파일 (Replay Log)에 복사한다.
  • Slave 노드의 SQL Thread는 파일 (Replay Log)를 한 줄 씩 읽으며 데이터를 저장한다.

사용 목적 :

  • 데이터 백업 : Master 서버를 데이터의 원본서버, Slave서버를 백업서버로 할 수 있다. * Master서버에 문제 ㅅ방생시 Slave 서버로 변경하여 사용할 수 있다.
  • DBMS 부하 분산 : 사용자의 폭주로 인해 1대의 DB 서버로 감당할 수 ㅇ벗을 때, MySQL 리플리케이션을 이용하여 같은 DB 데이터를 여러 대로 만들 수 있기에 부하분산할 수 있다.

장 / 단점 :
장점 

  • DB 요청의 60 ~ 80% 정도가 읽기 작업이기 때문에 리플리케이션만으로도 중분히 성능을 높일 수 있다.
  • 비동기 방식으로 운영되어 지연 시간이 거의 없다.

단점

  • 노드들 간의 데이터 동기화가 보장되지 않아 일관성있는 데이터를 얻지 못할 수 있다.
  • Master노드가 다운되면 복구 및 대처가 까다롭다.
  • 테이블에 데이터가 많다고 가정한다면 Slave Db 서버를 N 대로 늘려도 원하는 데이터를 테이블로부터 찾는데 많은 시간이 소요된다. * 샤딩 활용.

* 샤딩(Sharding) : 테이블을 특정 기준으로 나눠서 저장 및 검색하는 것
 
주의할 점 :

  • 호환성을 위해 Replication을 사용하는 MySQL의 버전을 동일하게 맞추는 것이 좋다.
  • Replication을 사용하기에 MySQL 버전이 다른 경우 Slave 서버가 상위버전이어야 한다.
  • Replication 서버 가동시 Master 서버, Slave 서버 순으로 가동시켜야 한다.

데이터베이스 클러스터링(Clustering)이란?

데이터베이스 클러스터링이란 여러 개의 DB를 수평적인 구조로 구축하는 방식이다. 클러스터링은 분산 환경을 구성하여 Single Point Of Failture와 같은 문제를 해결할 수 있는 Fail Over 시스템을 구축하기 위해서 사용된다. 데이터베이스 클러스터링은 동기 방식으로 노드들 간의 데이터를 동기화한다.

  • Active - Active 방식Active - StandBy 방식이 있다.
  • 서버가 한대 문제가 발생하더라도 대비가 가능하다.
  • 여러 데이터베이스 서버로 부하를 분산시켜 사용자의 요청을 더 많이 수용할 수 있다.(로드밸런싱)
  • 여러 대의 데이터베이스 서버를 가지므로 높은 가용성을 보장한다.

* 데이터베이스 가용성이란 DB가 동작하고 있는 시간과 정지한 시간의 비율이다.
* DB 시스템을 구성할 서버나 스토리지 장비를 각각 2대 이상으로 구성해서, 어느쪽에 장애가 발생했을 경우, 단 시간 내에 운용을 재개할 수 있도록 한다.
 
- Active - Active Clustering

데이터베이스 상태를 Active(동작) 상태로 두는 것이다.
 
장점 :

  • 서버 하나가 죽어도 다른 서버가 역할을 바로 수행하므로 중단되는 시간은 없다.(무중단 서비스 가능)
  • 같이 사용되어 CPU와 메모리 이용률을 늘릴 수 있다.(성능적인 측면에서 이득)

단점 :

  • 저장소 하나를 공유하면 병목현상 발생
  • 두 대의 서버를 동시에 운용해야하기 때문에 비용이 많이 든다.

 
-  Avtive - StandBy Clustering

데이터베이스 서버 하나는 Active(동작), 하나는 StandBy 상태로 두는 방식이다.
운영중인 서버가 정지되었을 경우, StandBy 중인 서버를 Active 상태로 전환한다.
 
장점 :

  • Active - Active에 비해 지용이 적게 든다.(비용절감)

단점 : 

  • 서버가 다운되었을 경우, 다른 서버가 Active 상태로 전환되는데 시간이 들어 서버가 중단되는 시간이 있다.

 
 
 


 
참고

더보기

https://code-lab1.tistory.com/205

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

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

code-lab1.tistory.com

https://mangkyu.tistory.com/97

[Database] 리플리케이션(Replication) vs 클러스터링(Clustering)

1. 리플리케이션(Replication)이란? [ 리플리케이션(Replication)이란? ] 리플리케이션이란 여러 개의 DB를 권한에 따라 수직적인 구조(Master-Slave)로 구축하는 방식이다. 리플리케이션에서 Master Node는 쓰

mangkyu.tistory.com

https://server-talk.tistory.com/240

MySQL Replication(복제) - 단방향 이중화

MySQL Replication을 이용하여 DBMS 단방향 이중화하기 웹서버 부하로 인해 L4를 이용하여 로드밸런싱으로 웹서버의 부하를 해결하였지만, DB 서버의 부하로 인하여 사이트가 느리게 열리는 현상이 발

server-talk.tistory.com

https://c-yhhhhh.tistory.com/m/147

DB Clustering & Replication

DB Clustering DB Clustering 이란 DB를 여러개의 서버가 나눠서 처리하도록 하는 것이다. ex ) 데이터베이스 서버가 죽으면 어떻게 대응할까? 데이터베이스 서버를 여러개로 만들자 ( 클러스터링 ) 서버

c-yhhhhh.tistory.com

https://jordy-torvalds.tistory.com/entry/Clustering-vs-Replication-vs-Sharding

Clustering vs Replication vs Sharding

이번 글에서는 샤딩과 클러스터링, 레플리케이션을 비교해보고 그 차이점을 알아보도록 하겠습니다. 아래 사진은 가장 기본적인 DB 구조 입니다. 위 사진은 DB 서버와 디스크 역할을 하는 DB 스토

jordy-torvalds.tistory.com

 

관련글 더보기