Skip to the content.

Router

내용

InnoDB 클러스터의 구성요소이며 애플리케이션과 MySQL 사이의 라우팅 역할을 하는 미들웨어


특징


전체적인 동작

  1. MySQL 라우터는 애플리케이션과 MySQL 간에 위치해 동작하며 애플리케이션은 일반적인 MySQL에 연결하는 것처럼 라우터로 연결
  2. 애플리케이션이 MySQL 라우터에 연결할 때마다 라우터는 구성되어 있는 인스턴스 리스트에서 적절한 MySQL을 선택, 연결
  3. 연결한 순간부터 라우터는 응답을 포함해 애플리케이션과 MySQL 간의 모든 네트워크 트래픽을 담당
  4. MySQL 라우터는 MySQL의 캐시 목록 로드 및 갱신, 구성된 InnoDB 클러스터의 네트워크 연결 (토폴로지) 및 유지함
  5. 캐시를 갱신된 상태로 유지하기 위한 메타 데이터 캐시 구성 요소는 메타 데이터가 포함된 InnoDB 클러스터 중 하나에 대해 오픈 커넥션을 유지함 (MySQL의 Performance 스키마에서 쿼리를 수행해 메타 데이터 데이터베이스 및 라이브 상태 정보를 확인)
  6. 클러스터 메타 데이터는 MySQL Shell을 사용하여 MySQL 추가, 제거 등 InnoDB 클러스터가 수정될 때마다 변경되며 Performance_schema 테이블은 클러스터 상태 변경이 감지될 때마다 MySQL의 Group Replication 플러그인에 의해 실시간으로 갱신됨
  7. 예를 들어 MySQL 하나가 예기치 않게 종료된 경우 메타 데이터 캐시 연결이 끊어지고 다시 연결할 수 없기 때문에 라우터는 다른 MySQL에 연결, 메타 데이터 및 InnoDB 클러스터 상태를 확인하려고 함
  8. 종료된 MySQL에 대한 애플리케이션 연결은 자동으로 닫히게 되고 그 후 라우터에 다시 연결할 경우 다른 MySQL로 연결이 이루어짐


파라미터


라우팅 방식

|라우팅 방식|설명| |-|-| |first-available|새 연결이 있을 경우 사용 가능한 서버들 중 가장 첫번째 서버로 라우팅. 오류가 발생했다면 그 다음 서버로 라우팅.| |next-available|first-available 과 같이 새 연결이 있을 경우 사용 가능한 서버들 중 가장 첫번째 서버로 라우팅하지만 오류가 발생했다면 오류가 발생한 서버는 라우팅 대상 서버에서 아예 제외되는 특징을 가짐. 라우터를 재기동하면 서버 리스트 초기화| |round-robin|round-robin 로직으로 Primary, Secondary 관계 없이 사용 가능한 서버를 사용| |round-robin-with-fallback|round-robin 과 같은 로직으로 동작하지만 Secondary 서버만 사용함. Secondary 서버에 오류가 있다면 Primary 서버 리스트를 사용|

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-conf-options.html#option_mysqlrouter_routing_strategy