ОШИБКА 2006 (HY000): MySQL Server Has Gone Away … (HaProxy / Galera)

Я устанавливаю кластер 3 серверов MariaDB в мультиосновной установке, которая хорошо работает. Я добавил 4-й сервер для HaProxy для загрузки баланса и циклического алгоритма так, чтобы у нас могло быть немного дублирования, которое также работает, за исключением 1 проблемы.

Я зарегистрирован в клиент MySQL на сервере HaProxy, выполняющем следующий запрос:

show variables like 'server_id';

Я получаю результаты, но если я ожидаю сроком на 5 или больше секунд и выполняю запрос снова, я получаю следующую ошибку:

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    52
Current database: *** NONE ***

Право после этого, я получаю результат с другим server_id, который указывает, что выравнивание нагрузки работает. Проблема, которую это вызывает, состоит в том, что, когда я пытаюсь соединиться из своего приложения Spring/Java, я могу выполнить запросы в течение того короткого промежутка времени и отбрасываний соединения. Я фигурирую, могу ли я решить его на сервере HaProxy, который решил бы другие проблемы, которые я имею.

Править: ДОБАВЛЕННЫЙ HAPROXY.CFG

global
    log 127.0.0.1 local0 notice
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    user haproxy
    group haproxy
    maxconn 4096
    daemon

defaults
    log global
    retries 2
    timeout connect 3000
    timeout server 5000
    timeout client 5000

listen mysql-cluster
    bind 0.0.0.0:3306
    mode tcp
    option tcpka
    option mysql-check user haproxy_check
    balance roundrobin
    server mysql-1 192.168.10.241:3306 check inter 1000 rise 3 fall 1
    server mysql-2 192.168.10.242:3306 check inter 1000 rise 3 fall 1
    server mysql-3 192.168.10.243:3306 check inter 1000 rise 3 fall 1

listen stats
    bind 192.168.10.211:8080
    mode http
    stats enable
    stats uri /
    stats realm Strictly\ Private
    stats auth USER:PASSWORD
5
задан 21 October 2015 в 16:27
2 ответа

Для продолжительного сеанса, который бездействует, например, при запуске mysql в командной строке, ваш клиент тайм-аута и сервер тайм-аута слишком короткие.

Они, вероятно, подходят для веб-сервера, обращающегося к базе данных, потому что соединение открыто только столько, сколько ему нужно, и каждая загрузка страницы создает новое соединение.

Чтобы разрешить соединения, чтобы оставаться открытыми в течение 10 минут, измените

timeout server 5000
timeout client 5000

на

timeout server 10m
timeout client 10m

. Если хотите, можете подняться еще выше. У меня есть кластеры RDS с 7-часовым тайм-аутом, и он отлично работает.

В документации есть более подробная информация о клиенте тайм-аута , сервере тайм-аута и короткометражке используется для спецификатора времени .

8
ответ дан 3 December 2019 в 01:30

Попробуйте настроить max_allowed_packet в mariaDB. Вот относительная ссылка, которая может решить вашу проблему.

http://stackoverflow.com/questions/10474922/error-2006-hy000-mysql-server-has-gone-away
-2
ответ дан 3 December 2019 в 01:30

Теги

Похожие вопросы