Skip to content

Latest commit

 

History

History
34 lines (32 loc) · 2.26 KB

mysql-cluster-vs-replica.md

File metadata and controls

34 lines (32 loc) · 2.26 KB

MySQL 클러스터링과 레플리카 비교

  • Replication
    • 설명
      • master 노드에서 쓰기 작업을 수행한다
      • master 노드는 데이터를 저장하고 트랜잭션 로그를 파일(BIN LOG)에 기록한다
      • slave 노드의 IO 쓰레드는 master 노드의 로그 파일(BIN LOG)을 파일(Relay Log)에 복사한다
      • slave 노드의 SQL 쓰레드는 파일(Relay Log)를 한 줄씩 읽으며 데이터를 저장한다
    • 장점
      • DB 요청의 대부분이 읽기 작업이기때문에 replication으로도 충분히 성능을 끌어올릴 수 있다
      • 비동기 방식으로 운영되어 지연시간이 거의 없다
    • 단점
      • 노드간의 데이터 동기화가 보장되지 않아 일관성 있는 데이터를 얻지 못할 수도 있다
      • master 노드가 죽으면 복구 및 대처가 까다롭다
  • Clustering
    • 설명

      • 여러 개의 DB를 수평적인 구조로 구축하는 방식이다
      • failover 시스템을 구축하기 위해 사용한다
      • 동기 방식으로 노드간의 데이터를 동기화한다
      • 1개의 노드에 쓰기 작업을 하고 COMMIT을 실행한다
      • 실제 디스크에 내용을 쓰기 전에 다른 노드로 데이터 복제를 요청한다
      • 다른 노드에서 복제 요청을 수락했다는 신호를 보내고, 디스크에 쓰기 싲가한다
      • 다른 노드로부터 신호를 받음녀 실제 디스크에 데이터를 저장한다
      • 클러스터링은 DB간의 데이터 무결성 검사를 하는 방식으로 데이터를 동기화한다
    • 장점

      • 노드간의 데이터를 동기화하여 항상 일관성있는 데이터를 얻을 수 있다
      • 1개의 노드가 죽어도 다른 노드가 살아있어 시스템을 계속 장애없이 운영할 수 있다
    • 단점

      • 여러 노드간의 데이터를 동기화하는데 시간이 필요하므로 레플리카에 비해 쓰기 성능이 떨어진다
      • 장애가 전파된 경우 처리가 까다로우며, 데이터 동기화에 의해 스케일링에 한계가 있다
    • 방식

      • active-active: 클러스터를 항상 가동해 가용가능한 상태로 두는 방식
      • active-standby: 일부 클러스터는 가동하고, 일부 클러스터는 대기 상태로 구성하는 방식