Upgrade to Pro — share decks privately, control downloads, hide ads and more …

InnoDBCluster for kakao

kakao
December 09, 2022

InnoDBCluster for kakao

#Database #MySQL #InnoDBCluster

MySQL InnoDBCluster를 사용하여 MySQL DB 운영에 적용하는 내용에 대해서 설명합니다.

현재 카카오의 HA 적용 솔루션
InnoDBCluster를 고려하게 된 이유
InnoDBCluster 아키텍쳐 , 전환 계획
InnoDBCluster 운영 방법에 대한 내용에 대해 설명하려고 합니다.

발표자 : pio.p
카카오에서 MySQL Database 를 운영하고 있는 피오입니다.

kakao

December 09, 2022
Tweet

More Decks by kakao

Other Decks in Programming

Transcript

  1. Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public

    display is not permitted without written permission from Kakao. InnoDBCluster for kakao if(kakao)2022 카카오 김근표 Pio.P
  2. 카카오 MySQL MHA 환경 InnoDBCluster 도입 배경 InnoDBCluster Architecture InnoDBCluster

    표준안 Shared InnoDBCluster 표준안 이관 방법 앞으로의 계획
  3. 개요 - MHA 환경 사용 - master 상태를 감지하여 장애

    발생시 slave 를 승격 시켜 서비스 장애 시간 최소화 - Failover 발생시 binlog 확보가 가능하여 데이터 유실 최소화 - Agentless MHA 와 MMM 을 고려했으나 binlog 확보가 가능하며 agentless 방식인 MHA 채택
  4. MySQL : Master – Slave HA : MHA + Domain

    카카오 MySQL MHA 환경 Slave Master MHA WEB / WAS Service Domain Health Check
  5. 카카오 MySQL MHA 환경 Failover Master Master MHA WEB /

    WAS Health Check Service Domain MySQL : Master – Slave HA : MHA + Domain
  6. 카카오 MHA 환경 운영 문제점 - MHA 솔루션 지속적인 유지보수

    관리 요구 - Read scale out 구조적 한계 - Slave Health check 시 추가 관리 요구 - Failover 시 후속 처리 필요 위 문제점들을 보완 가능한 InnoDBCluster 를 도입하기로 결정
  7. InnoDBCluster Architecture WEB / WAS Primary Secondary MySQL Router GSLB

    DBA MySQL Shell group replication InnoDBCluster Secondary
  8. InnoDBCluster Architecture WEB / WAS Primary Primary MySQL Router GSLB

    DBA MySQL Shell group replication InnoDBCluster Secondary
  9. MySQL - Single primary - MySQL 8.0.28 이상 - InnoDB

    Storage Engine - Primary Keys - my.cnf [mysqld] gtid_mode = ON server_id = xx ( unique ) binlog_format = ROW log_slave_updates master_info_repository=TABLE relay_log_info_repository=TABLE binlog_transaction_dependency_tracking=WRITESTET
  10. Backup - hidden option - Network storage backup ( kage

    , tenth ) cluster.setInstanceOption(“localhost”,”tag:_hidden”,true)
  11. ScaleOut - Clone ( add instance ) Secondary Primary Secondary

    MySQL Router DBA MySQL Shell Service Secondary Data Transfer
  12. ScaleOut - Incremental ( add instance ) Secondary Primary Secondary

    MySQL Router DBA MySQL Shell Secondary Kage or tenth + Data Download Service
  13. Shared InnoDBCluster Architecture Service 1 Secondary Primary Secondary GSLB InnoDBCluster

    Service 1 Service 2 Service 3 Service 1 Service 2 Service 3 Service 1 Service 3 Service 2 Service 2 Service 3 GSLB GSLB : Schema MySQL Router
  14. MySQL User Resource limits - 계정별 시간당 Queries 제한 -

    계정별 시간당 update 제한 - 계정별 시간당 접속 가능한 횟수 제한 - 계정별 max user connection 제한 create user ‘test’@’localhost’ identified by ‘test’ with max_queries_per_hour 10 max_updates_per_hour 10 max_connections per hour 5 max_user_connections 10;
  15. MySQL User Resource limits - 1 unit ~ 4 unit

    - 1 unit 시간당 쿼리 1,000,000 시간당 update 100,000 max user connection 100
  16. InnoDBCluster 이관 구성 방법 WEB / WAS Service Domain Secondary

    Primary Secondary Master Slave Replication MySQL Router new
  17. InnoDBCluster 서비스 무 중단 이관 방법 new MySQL Router WEB

    / WAS read _only = ON Master Session kill A record 수정 1 2 3 Reset slave 4 Replication Service Domain Master Slave Secondary Primary Secondary
  18. InnoDBCluster 서비스 중단 이관 방법 new MySQL Router WEB /

    WAS read _only = ON Application 재시작 A record 수정 1 2 3 Reset slave 4 서비스 중단 상태 ※ Service Domain Master Slave Replication Secondary Primary Secondary