Database/Mysql

[Real MySQL] 17-1. InnoDB 클러스터: 아키텍처

noahkim_ 2024. 9. 7. 20:21

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

1. InnoDB 클러스터

  • 복제 기능을 통해 고가용성을 확보할 수 있으나, 단순한 문제는 아님
  • 소스 서버에 장애가 발생할 때, failover 작업을 수동으로 수행해야 함 (레플리카 서버 승격)
    • 레플리카 서버의 읽기 모드 해제
    • 소스 서버에서 데이터 변경 수행 비활성화 (스플릿 브레인 현상 방지)
    • 애플리케이션 서버는 커넥션 설정을 해야 함 (새로운 소스 서버를 바라보도록)
  • failover 작업을 자동화하기 위해 HA 솔루션을 사용함
    • 사용 환경에 맞게 수정하는 작업이 필요 (지속적인 유지보수 및 관리가 필요함)
    • ex) MMM, MHA, Orchestrator
  • MySQL에서 빌트인 형태의 HA 솔루션인 InnoDB 클러스터가 도입됨  (5.7.17~)
  • 즉, InnoDB 클러스터는 고가용성 실현을 위해 만들어진 여러 구성 요소들의 집합체

 

2. 아키텍쳐

그룹 복제

  • 소스 서버의 데이터를 레플리카 서버로 동기화하는 복제 역할
  • 목제에 참여하는 서버들에 대한 자동화된 멤버십 관리 (새로운 멤버 추가 및 삭제)
    • 설정에 따라 프라이머리 서버(소스 서버)의 수를 여러 대 지정할 수 있음
    • 고가용성을 위해 서버가 최소 3대 이상 구성되어야 함
  • 서버 장애 감지
    • 토폴로지 변경
    • 자동으로 장애 서버를 그룹에서 제외시킴

 

서버
  • 프라이머리
    • 읽기/쓰기 모두 가능
    • 소스 서버
  • 세컨더리
    • 읽기만 가능
    • 레플리카 서버

 

MySQL 라우터

  • 애플리케이션 서버와 MySQL 서버 사이에서 동작하는 미들웨어

 

프록시 역할
  • 애플리케이션이 실행한 쿼리를 적절한 MySQL 서버로 전달
    • InnoDB 클러스터로 구성된 서버들의 메타데이터 정보를 가짐
  • InnoDB 클러스터 환경에서는 MySQL 서버로 직접 접근해서 쿼리를 실행하지 않음

 

MySQL 셸

  • 기존 MySQL 클라이언트보다 좀 더 확장된 기능을 가진 클라이언트 프로그램

 

스크립트 작성 기능
  • Javascript, Python 등의 언어 사용 가능

 

어드민 작업
  • 클러스터 확인, 구성
  • 서버 설정 변경