Вопрос конкретно по балансировщику ProxySQL.
Добавил ноды MySQL в пул ProxySQL, ноды доступны и ProxySQL их видит:
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM runtime_mysql_servers;
+--------------+---------------------------------------+--------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+--------+
| 1 | serv1 | ONLINE |
| 0 | serv2 | ONLINE |
+--------------+---------------------------------------+--------+
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM mysql_servers;
+--------------+---------------------------------------+--------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+--------+
| 1 | serv1 | ONLINE |
| 0 | serv2 | ONLINE |
+--------------+---------------------------------------+--------+
Проблема в том, что если на одной ноде закрыть порт 3306 (дабы сэмулировать проблему), то статус ONLINE не изменится (сначала думал, что дело в таймаутах, но нет).
Если сделать systemctl restart proxysql то
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM mysql_servers;
+--------------+---------------------------------------+--------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+--------+
| 0 | serv1 | ONLINE |
| 1 | serv2 | ONLINE |
+--------------+---------------------------------------+--------+
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM runtime_mysql_servers;
+--------------+---------------------------------------+---------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+---------+
| 0 | serv1 | ONLINE |
| 1 | serv2 | SHUNNED |
+--------------+---------------------------------------+---------+
Если же теперь открываем обратно порт на той ноде (без перезапуска proxysql), на которой его закрывали, то происходит такое:
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM mysql_servers;
+--------------+---------------------------------------+--------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+--------+
| 0 | serv1 | ONLINE |
| 0 | serv2 | ONLINE |
| 1 | serv2 | ONLINE |
+--------------+---------------------------------------+--------+
3 rows in set (0.00 sec)
ProxySQLAdmin> SELECT hostgroup_id, hostname, status FROM runtime_mysql_servers;
+--------------+---------------------------------------+--------+
| hostgroup_id | hostname | status |
+--------------+---------------------------------------+--------+
| 0 | serv1 | ONLINE |
| 1 | serv2 | ONLINE |
| 0 | serv2 | ONLINE |
+--------------+---------------------------------------+--------+
3 rows in set (0.02 sec)
Что не так? Откуда берется ещё одна строка в таблице с нодами после возвращения в строй недоступной ноды и почему без передергивания proxysql статус реально проблемной ноды не меняетсЯ?