본문 바로가기

Proxy/ProxySQL

ProxySQL : Shunned value modify

Shunned?

  • ProxySQL에서 Shunned는 일정 횟수 이내에 접속에 대한 error가 발생했을때 서버를 접속 서버를 제외시키기 위한 수단입니다.

Why Shunned Value Modify?

  • Shunned에 대한 parameter는 2개가 존재합니다.

  • mysql-shun_on_failures : 같은 서버에서 1초동안 몇번의 connection 에러가 났을 경우 자동으로 Shunned 상태로 변경 될것인지에 대한 parameter입니다.
    – default : 5

  • mysql-shun_recovery_time_sec : 자동적으로 Shunned 상태가 된 서버가 몇 초뒤에 자동으로 online 상태로 변경할 것인지에 대한 parameter입니다.
    – default : 10(seconds)

  • 이 두개의 parameter를 다시한번 풀어보면, "1초동안 5번의 connection 에러가 났을경우 Shunned 상태로 변경되서 신규 커넥션이 더이상 에러 서버로 가지 않고 10초 이후에 에러 서버를 다시 online으로 변경시켜서 서비스 투입시킨다."라는 것 입니다.
  • 이때 가장 문제가 된다고 생각한 점은 10초 이후에 에러 서버를 다시 online으로 바꿔서 서비스 투입을 한다는 것 입니다. 아무런 검증없이 10초 뒤에 서비스 투입하기에는 위험한 것 같습니다.
  • 그래서 해당 파라미터 2개에 대해서 수정을 했습니다.

  • mysql-shun_on_failures : 5 -> 1
  • mysql-shun_recovery_time_sec : 10 -> 7200
  • 바꾼 파라미터의 의미는 1초에 1번 connection fail이 나면 바로 shun 상태로 빠져서 서비스에서 제외를 시키고 7200초동안 서비스 투입을 안시키겠다는 것 입니다.

How to Parameter Modify?

  • parameter 변경 후 RUNTIME 및 DISK 반영

    update main.global_variables set variable_value=1 where variable_name='mysql-shun_on_failures';
    update main.global_variables set variable_value=7200 where variable_name='mysql-shun_recovery_time_sec';
    LOAD MYSQL VARIABLES TO RUNTIME;
    SAVE MYSQL VARIABLES TO DISK;

  • parameter 변경 여부 확인

    mysql> select from main.global_variables;
    +----------------------------------------+---------------------------------------------------+
    | variable_name                          | variable_value                                    |
    +----------------------------------------+---------------------------------------------------+
    | admin-stats_credentials                | stats:stats                                       |
    ....
    | mysql-shun_on_failures                 | 1                                                 |
    | mysql-shun_recovery_time_sec           | 7200                                              |
    ....
    | mysql-session_debug                    | (null)                                            |
    +----------------------------------------+---------------------------------------------------+

Goal of Shunned Status

  • Shunned 상태를 잘 이용하면 손쉽게 slave 서버들의 health check 및 DB서버 장애시 서비스(Application)에서의 error를 최소한으로 줄일 수 있을 것이라고 생각이 됩니다.
  • 현재 서버 shutdown으로 인한 OFFLINE_SOFT와 OFFLINE_HARD가 자동으로 변경되지는 않는 것 같습니다. 그래서 1차적으로 SHUNNED 상태로 변경을 하고 다시 체크해서 OFFLINE_SOFT와 OFFLINE_HARD로 변경하는 방안을 생각해야합니다.


'Proxy > ProxySQL' 카테고리의 다른 글

ProxySQL : Too Many Open Files Error  (0) 2016.10.01
ProxySQL 기본설명  (0) 2016.10.01
Global Variable : Admin Setting  (0) 2016.10.01
ProxySQL Global Variable  (0) 2016.10.01