#mysql #database #mariadb #galera #proxysql
#mysql #База данных #mariadb #galera #proxysql
Вопрос:
У меня есть 2 proxysql (2.0.13) keepalived перед 3-узловым galera-кластером, и 2 из galera-узлов отображаются как «ИЗБЕГАЕМЫЕ» в моей hostgroup 10. Я не знаю, почему они отображаются как «ИЗБЕГАЕМЫЕ», и они никогда не восстанавливаются.
Итак, я надеялся, что кто-нибудь здесь сможет помочь мне вернуть удаленные серверы в цикл.
Что я пробовал: — Установить переменную mysql-shun_on_failures = 5000 amp; mysql-shun_recovery_time_sec = 10 — перезагрузить узлы proxysql
Я установил соединения с hostgroup 10 и выполнил несколько запросов, чтобы запустить восстановление, но их по-прежнему избегают.
Вот некоторая информация из proxysql
Servers:
Admin> select * from runtime_mysql_servers;
-------------- ----------- ------ ----------- --------- -------- ------------- ----------------- --------------------- --------- ---------------- ---------
| hostgroup_id | hostname | port | gtid_port | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms | comment |
-------------- ----------- ------ ----------- --------- -------- ------------- ----------------- --------------------- --------- ---------------- ---------
| 10 | 10.4.4.21 | 3306 | 0 | SHUNNED | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 20 | 10.4.4.21 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 20 | 10.4.4.22 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 30 | 10.4.4.23 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 30 | 10.4.4.22 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 30 | 10.4.4.21 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 10 | 10.4.4.23 | 3306 | 0 | ONLINE | 1 | 0 | 1000 | 0 | 0 | 0 | |
| 10 | 10.4.4.22 | 3306 | 0 | SHUNNED | 1 | 0 | 1000 | 0 | 0 | 0 | |
-------------- ----------- ------ ----------- --------- -------- ------------- ----------------- --------------------- --------- ---------------- ---------
Hostgroups:
Admin> select * from runtime_mysql_galera_hostgroups;
------------------ ------------------------- ------------------ ------------------- -------- ------------- ----------------------- ------------------------- --------------------
| writer_hostgroup | backup_writer_hostgroup | reader_hostgroup | offline_hostgroup | active | max_writers | writer_is_also_reader | max_transactions_behind | comment |
------------------ ------------------------- ------------------ ------------------- -------- ------------- ----------------------- ------------------------- --------------------
| 10 | 20 | 30 | 9999 | 1 | 1 | 1 | 30 | galera-hostgroup-1 |
------------------ ------------------------- ------------------ ------------------- -------- ------------- ----------------------- ------------------------- --------------------
Status:
Admin> select hostgroup,srv_host,status,ConnUsed,MaxConnUsed,Queries,Latency_us from stats.stats_mysql_connection_pool order by srv_host;
----------- ----------- --------- ---------- ------------- --------- ------------
| hostgroup | srv_host | status | ConnUsed | MaxConnUsed | Queries | Latency_us |
----------- ----------- --------- ---------- ------------- --------- ------------
| 10 | 10.4.4.21 | SHUNNED | 0 | 0 | 0 | 289 |
| 30 | 10.4.4.21 | ONLINE | 0 | 0 | 0 | 289 |
| 20 | 10.4.4.21 | ONLINE | 0 | 0 | 0 | 289 |
| 10 | 10.4.4.22 | SHUNNED | 0 | 0 | 0 | 281 |
| 30 | 10.4.4.22 | ONLINE | 0 | 0 | 0 | 281 |
| 20 | 10.4.4.22 | ONLINE | 0 | 0 | 0 | 281 |
| 10 | 10.4.4.23 | ONLINE | 1 | 1 | 106 | 277 |
| 30 | 10.4.4.23 | ONLINE | 0 | 0 | 0 | 277 |
----------- ----------- --------- ---------- ------------- --------- ------------
My ping-log:
Admin> select * from monitor.mysql_server_ping_log order by time_start_us DESC limit 0,10;
----------- ------ ------------------ ---------------------- ------------
| hostname | port | time_start_us | ping_success_time_us | ping_error |
----------- ------ ------------------ ---------------------- ------------
| 10.4.4.23 | 3306 | 1597916943398296 | 257 | NULL |
| 10.4.4.21 | 3306 | 1597916943298413 | 232 | NULL |
| 10.4.4.22 | 3306 | 1597916943198499 | 276 | NULL |
| 10.4.4.22 | 3306 | 1597916935355114 | 220 | NULL |
| 10.4.4.23 | 3306 | 1597916935277079 | 259 | NULL |
| 10.4.4.21 | 3306 | 1597916935199034 | 232 | NULL |
| 10.4.4.22 | 3306 | 1597916927359456 | 175 | NULL |
| 10.4.4.21 | 3306 | 1597916927278902 | 242 | NULL |
| 10.4.4.23 | 3306 | 1597916927198335 | 302 | NULL |
| 10.4.4.21 | 3306 | 1597916919324515 | 189 | NULL |
----------- ------ ------------------ ---------------------- ------------
Спасибо вам всем..
Ответ №1:
Я нашел причину, по которой они помечены как «избегаемые»:
Моя конфигурация hostgroup имеет значение max_writers = 1 — это означает, что ТОЛЬКО один из моих 3-х авторов (в моей группе хостов writer) должен быть доступен в данный момент, а 2 других должны быть готовы, поэтому они могут взять на себя управление, если текущий автор потерпит неудачу.
Это очень хорошо объяснено здесь — посмотрите в разделе «Поддержка ProxySQL 2.x для кластера Galera» https://severalnines.com/database-blog/how-run-and-configure-proxysql-20-mysql-galera-cluster-docker .
Ответ №2:
У нас аналогичная проблема, когда экземпляр в одном редко используемом пуле избегается, но проходит все проверки. Единственное, что я нашел, чтобы вернуть его в оперативный режим, — это использовать load mysql servers to runtime
на одном из узлов кластера ProxySQL.