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

InnoDBCluster for kakao

kakao
PRO
December 09, 2022

InnoDBCluster for kakao

#Database #MySQL #InnoDBCluster

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

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

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

kakao
PRO

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

    View Slide

  2. 카카오 MySQL MHA 환경
    InnoDBCluster 도입 배경
    InnoDBCluster Architecture
    InnoDBCluster 표준안
    Shared InnoDBCluster 표준안
    이관 방법
    앞으로의 계획

    View Slide

  3. 카카오 MySQL MHA 환경

    View Slide

  4. 개요
    - MHA 환경 사용
    - master 상태를 감지하여 장애 발생시 slave 를 승격 시켜 서비스 장애 시간 최소화
    - Failover 발생시 binlog 확보가 가능하여 데이터 유실 최소화
    - Agentless
    MHA 와 MMM 을 고려했으나 binlog 확보가 가능하며 agentless 방식인 MHA 채택

    View Slide

  5. MySQL : Master – Slave
    HA : MHA + Domain
    카카오 MySQL MHA 환경
    Slave
    Master
    MHA
    WEB / WAS
    Service Domain
    Health Check

    View Slide

  6. 카카오 MySQL MHA 환경 Failover
    Master
    Master
    MHA
    WEB / WAS
    Health Check
    Service Domain
    MySQL : Master – Slave
    HA : MHA + Domain

    View Slide

  7. InnoDBCluster 도입 배경

    View Slide

  8. 카카오 MHA 환경 운영 문제점
    - MHA 솔루션 지속적인 유지보수 관리 요구
    - Read scale out 구조적 한계
    - Slave Health check 시 추가 관리 요구
    - Failover 시 후속 처리 필요
    위 문제점들을 보완 가능한 InnoDBCluster 를 도입하기로 결정

    View Slide

  9. InnoDBCluster Architecture

    View Slide

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

    View Slide

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

    View Slide

  12. InnoDBCluster 사내 표준안

    View Slide

  13. InnoDBCluster 설정 고려사항
    - MySQL
    - MySQL Router
    - Backup
    - ScaleOut

    View Slide

  14. 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

    View Slide

  15. MySQL Router
    [routing:innodbcluster]
    bind_address=0.0.0.0
    bind_port=6446
    Destinations=192.168.0.1,192.168.0.2,192.168.0.3
    Routing_strategy=first-available
    protocal=classic

    View Slide

  16. MySQL Router – Destinations
    - Host
    - Metadata-cache
    Destinations=192.168.0.1,192.168.0.2,192.168.0.3
    Destinations=metadata-cache://xxxx/default?role=PRIMARY
    Destinations=metadata-cache://xxxx/default?role=SECONDARY

    View Slide

  17. MySQL Router – Routing strategy
    - First-available
    - Round-robin
    Routing_strategy=first-available
    Routing_strategy=round-robin

    View Slide

  18. Backup
    - hidden option
    - Network storage backup ( kage , tenth )
    cluster.setInstanceOption(“localhost”,”tag:_hidden”,true)

    View Slide

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

    View Slide

  20. ScaleOut
    - Incremental ( add instance )
    Secondary
    Primary
    Secondary
    MySQL Router
    DBA
    MySQL Shell
    Secondary
    Kage or tenth
    +
    Data
    Download
    Service

    View Slide

  21. Shared InnoDBCluster 사내 표준안

    View Slide

  22. Shared InnoDBCluster Concepts
    - InnoDBCluster Architecture
    - MySQL user resource limit
    - 1 service = 1 logical database

    View Slide

  23. 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

    View Slide

  24. 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;

    View Slide

  25. MySQL User Resource limits
    - 1 unit ~ 4 unit
    - 1 unit
    시간당 쿼리 1,000,000
    시간당 update 100,000
    max user connection 100

    View Slide

  26. 이관 방법

    View Slide

  27. InnoDBCluster 이관 구성 방법
    WEB / WAS
    Service Domain
    Secondary
    Primary
    Secondary
    Master Slave
    Replication
    MySQL Router
    new

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 앞으로의 계획

    View Slide

  31. E.O.D

    View Slide