Database/MySQL, MariaDB

ProxySQL 2.3 - 향상된 Group 복제 운영 방식

BabyTT 2022. 9. 4. 13:10

ProxySQL 에 추가된 두가지 Replication 지원 방식 

Status SHUNNED

  • Automatically shunning slaves with replication lag
  • replication 지연이 임계값에 도달하면 ProxySQL 은 server 를 OFFLINE 상태로 변경하는 대신 임시로 제외 시키는 SHUNNED 상태로 변경하며, 갑자기 상태 변경과 모든 backend connectin 을 drop 하는 것이 아니라 천천히 제외 시킨다. Replication lag 임계값에 도달하면 ProxySQL이 서버를 'OFFLINE' 호스트 그룹으로 옮기지 않고 Shunned 상태로 변경한다.
# 자동으로 복제 서버를 replication 에서 제외시키려면 max_replication_lag 값을 설정한다. 이 값이 0이면 
# replication을 모니터링 하지 않는다.
UPDATE mysql_servers SET max_replication_lag=30 WHERE hostname='172.16.0.3';
SELECT hostgroup_id,hostname,max_replication_lag FROM mysql_servers;

select @@mysql-monitor_groupreplication_max_transactions_behind_count;

# replication lag가 임계값을 넘어가면 SHUNNED 상태로 변경된다.
mysql> select hostgroup_id,hostname, status from runtime_mysql_servers;
+--------------+----------+---------+
| hostgroup_id | hostname | status  |
+--------------+----------+---------+
| 2            | gr1      | ONLINE  |
| 3            | gr2      | SHUNNED |
| 3            | gr3      | SHUNNED |
+--------------+----------+---------+

 

status OFFLINE_SOFT

  • Gracefully disabling backend server
  • ProxySQL에서 replication 해당 서버를 수동으로 점검 모드인 'OFFLINE_SOFT'로 설정 변경하여 운영 가능하며 replication 이 복구되면 ONLINE 상태로 변경된다.
# ProxySQL 에서 서버 상태를 offline_soft 로 변경한다.
mysql> update mysql_servers set status='offline_soft' where hostname='gr3'; 
load mysql servers to runtime; save mysql servers to disk;
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.04 sec)

mysql> select hostgroup_id,hostname,status from runtime_mySQL_servers;
+--------------+----------+--------------+
| hostgroup_id | hostname | status       |
+--------------+----------+--------------+
| 2            | gr1      | ONLINE       |
| 3            | gr3      | OFFLINE_SOFT |
| 3            | gr2      | ONLINE       |
+--------------+----------+--------------+
3 rows in set (0.00 sec)

# mysql group replication node에서 replication stop 후 start 하면 
mysql> start group_replication;
Query OK, 0 rows affected (2.58 sec)

# 이전 버전 이전에서는 자동으로 OFFLINE_SOFT 모드가 ONLINE 으로 변경되었으나
mysql> select hostgroup_id,hostname,status from runtime_mySQL_servers;
+--------------+----------+--------+
| hostgroup_id | hostname | status |
+--------------+----------+--------+
| 2            | gr1      | ONLINE |
| 3            | gr3      | ONLINE |
| 3            | gr2      | ONLINE |
+--------------+----------+--------+

# ProxySQL 2.3 버전 이후부터는 복제 그룹에서 삭제하려면 명시적으로 'ONLINE'으로 변경한 후 작업해야 한다.
mysql> update mysql_servers set status='online' where hostname='gr3'; load mysql servers to runtime; save mysql servers to disk;
Query OK, 1 row affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.04 sec)
 
mysql> select hostgroup_id,hostname,status from runtime_mySQL_servers;
+--------------+----------+--------+
| hostgroup_id | hostname | status |
+--------------+----------+--------+
| 2            | gr1      | ONLINE |
| 3            | gr3      | ONLINE |
| 3            | gr2      | ONLINE |
+--------------+----------+--------+

 

 

참조:

https://proxysql.com/documentation/backend-server-configuration/

 

Backend Server Configuration - ProxySQL

Configuring Backend MySQL Servers in ProxySQL MySQL Servers are configured in the mysql_servers and (optionally) mysql_replication_hostgroups […]

proxysql.com

https://www.percona.com/blog/proxysql-2-3-0-enhanced-support-for-mysql-group-replication/

 

ProxySQL 2.3.0: Enhanced Support for MySQL Group Replication - Percona Database Performance Blog

Learning more about the new Group Replication enhancements and features available in ProxySQL 2.3.0.

www.percona.com