Skip to content

Latest commit

 

History

History
60 lines (50 loc) · 4.15 KB

File metadata and controls

60 lines (50 loc) · 4.15 KB

Replication

정의

  • MySQL이 확장성을 위해 제공하는 기술 중 가장 일반적인 방법
  • 2대 이상의 MySQL 서버가 동일한 데이터를 담도록 실시간으로 동기화하는 기술

목적

  • 고가용성
  • ReadWrite Query 와 ReadOnly 쿼리를 구분하여 수행하여 DB의 부하를 분산시킴
  • 백업 수행

Master & Slave

Master Slave
복제 대상 서버 복제하는 서버
INSERT나 UPDATE와 같은 쿼리로 데이터를 변경할 수 있는 서버 SELECT 쿼리로 데이터를 읽기만 할 수 있는 서버
Binary Log Relay Log

Master

  • 기술적으로는 MySQL의 바이너리 로그가 활성화되면 어떤 MySQL 서버든 마스터가 됨
  • 그러나 복제에 참여하는 여러 서버 가운데 변경이 허용되는 서버를 마스터로 한정함
    • 복제되는 데이터의 일관성을 보장하기 어렵기 때문
  • 마스터 서버에서 실행되는 DML과 DDL 가운데 데이터의 구조나 내용을 변경하는 모든 쿼리 문장은 바이너리 로그에 기록
  • 슬레이브 서버에서 변경 내역을 요청하면 마스터 서버는 바이너리 로그를 읽어 슬레이브로 넘김
  • 바이너리 로그를 안정적으로 기록하기 위해 갭 락을 유지하고
  • 매 트랜잭션이 커밋될 때마다 데이터를 변경시킨 쿼리 문장을 바이너리 로그에 기록해야 함

Slave

  • 바이너리 로그를 받아 올 마스터의 정보를 가지고 있는 경우 슬레이브 서버가 됨
  • 일반적으로 마스터와 슬레이브의 데이터를 동일한 상태로 유지하기 위해 슬레이브 서버는 읽기 전용으로 설정하는 경우가 많음
  • 슬레이브 서버의 I/O 스레드는 마스터 서버에 접속해 변경 내역을 요청하고, 받아온 변경 내역을 릴레이 로그에 저장함
  • 슬레이브 서버의 SQL 스레드가 릴레이 로그에 기록된 변경 내역을 재실행함으로써 슬레이브의 데이터를 마스터와 동일한 상태로 유지
  • 하나의 슬레이브는 하나의 마스터만 가질 수 있음
  • 마스터 서버에서 수많은 동시 사용자가 실행한 데이터 변경 쿼리 문장이 슬레이브 서버에서는 하나의 스레드로 모두 처리되어야 함
    • 따라서 변경이 잦은 MySQL 서버일수록 마스터 서버보다 슬레이브 서버의 사양이 더 좋아야
    • 슬레이브에서는 마스터에서 동시에 여러 개의 스레드로 실행된 쿼리를 지연시키지 않고 하나의 스레드로 처리될 수 있게 됨

복제 방식

Async Replication

async replication

  • MySQL의 기본 복제 방식
  • Master 서버의 Binary Log에 모든 변경 사항이 기록되고, Slave 서버에서 이 Binary Log를 이용하여 복제를 수행하는 방식
  • 복제 과정에서 비동기 방식으로 동작하기 때문에
    • Master에서는 Slave의 복제 여부 등을 확인 하지 않고 Master 서버에서 실행중인 트랜잭션을 종료하고 결과를 반환
    • 변경량이나 Slave의 부하 정도, 시스템 사용률, 네트워크 속도 등 여러가지 이유로 Slave에 복제가 늦어질 수 있음
    • 복제가 늦어지면 조회시점에 따라 데이터에 차이가 발생할 수도 있음
  • Master / Slave 간의 Gap을 줄이는게 중요하다.

Semi-sync Replication

semi-sync replication

  • MySQL 5.5 버전에서 도입됨
  • Relay log에 기록이 완료되었다는 메세지(신호)를 받아야만 처리중인 트랜잭션의 결과를 반환하는 방식
  • Async 방식에 비하면 성능이 조금 저하되지만, 완전한 sync(slave에서 relay log 내용까지 적용되는) 방식보다는 성능 저하가 덜함
  • Slave 측까지 변경이력이 전달되었음을 보장하기 때문에 async 방식에 비해 Master 와 slave 사이의 데이터 동기화나 안전성이 더욱 보장됨


출처 : [MySQL] 복제(Replication)란 무엇일까?, MySQL Replication(복제) 구성 및 설정 - Async - Semi Async