Database/Mysql

[Real MySQL] 17-3. InnoDB 클러스터: MySQL

noahkim_ 2024. 9. 7. 20:23

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

 

1. MySQL 셸

  • 고급 클라이언트 툴

 

다양한 언어 모드 지원

mysqlsh> \py
mysqlsh> \sql
mysqlsh> \js

 

 

API

X DevAPI
  • X 프로토콜을 사용해 MySQL 서버에서 관계형 데이터와 문서 기반 데이터를 처리할 수 있음 

 

Admin API
  • InnoDB 클러스터 및 InnoDB 레플리카 셋 구축 지원

 

글로벌 객체

session
  • 셸에서 MySQL 서버에 연결했을 때 생성된 세션에 매핑되는 객체
  • 세션 단위에서 사용할 수 있는 기능 제공

 

dba
  • Admin API 사용 시 쓰이는 객체

 

cluster
  • InnoDB 클러스터에 매핑되는 객체
  • 클러스터 제어 기능 제공

 

rs
  • InnoDB 레플리카 셋에 매핑되는 객체
  • 레플리카셋 제어 기능 제공

 

db
  • X 프로토콜을 사용해 MySQL에 연결된 경우, 지정했던 데이터베이스에 매핑되는 객체
  • 데이터베이스 제어 기능 제공

 

shell
  • MySQL 셸 제어 기능 제공

 

util
  • MySQL 서버 버전을 업그레이드할 준비가 됐는지 확인
  • MySQL 서버에 데이터를 로딩 또는 추출하는 등의 작업 기능 제공

 

2. MySQL 라우터

InnoDB 클러스터의 프록시 역할

 

쿼리 부하 분산

  • 애플리케이션 서버로부터 유입된 쿼리 요청을 클러스터 내 적절한 MySQL 서버로 분배함
    • 반환된 쿼리 결과를 다시 애플리케이션 서버로 전달
  • 클러스터 내 부하가 균형을 이루고, 특정 서버에 과부하가 걸리는 것을 방지할 수 있음

 

구성 변경 자동 감지

  • 서버 구성이 변경될 경우, 애플리케이션에서 MySQL 서버의 커넥션 정보도 바뀌여야 함
  • MySQL 라우터는 클러스터의 정보를 캐싱하고 주기적으로 업데이트
    • 라우터가 알아서 새로운 서버 정보를 반영하여 애플리케이션이 끊기지 않도록 함
    • 애플리케이션의 커넥션 설정을 수동으로 변경할 필요 없음

 

자동 페일오버

  • 리더 서버가 다운되면, MySQL 클러스터는 자동으로 새로운 리더를 선출함
  • MySQL 라우터는 장애 감지 후 새로운 리더 또는 가용한 서버로 자동으로 커넥션을 재설정하여 장애 복구를 지원
  • 애플리케이션이 중단 없이 지속적으로 MySQL 클러스터와 연결될 수 있음
  • 별도의 페일오버 필요 없음