ERRO 2006 (HY000): O servidor MySQL foi embora… (HaProxy / Galera)

5

Eu configurei um cluster de 3 servidores MariaDB em uma configuração multi-mestre que está funcionando bem. Eu adicionei um quarto servidor para HaProxy para balanceamento de carga e round robin para que possamos ter um pouco de redundância que também está funcionando, exceto por um problema.

Estou logado no cliente MySQL no servidor HaProxy executando a seguinte consulta:

show variables like 'server_id';

Estou obtendo os resultados, mas se eu esperar por um período de cinco segundos ou mais e executar a consulta novamente, recebo o seguinte erro:

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

Logo após, recebo o resultado com um server_id diferente, o que indica que o balanceamento de carga está funcionando. O problema que isso está causando é que, quando tento conectar-me a partir do meu aplicativo Spring / Java, posso executar consultas por um curto período de tempo e a conexão cai. Eu acho que se eu puder resolver isso no servidor HaProxy, isso resolveria os outros problemas que estou tendo.

EDIT: ADICIONADO 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
    
por Hatem Jaber 21.10.2015 / 00:30

2 respostas

5

Para uma sessão de longa duração inativa, como a execução de mysql na linha de comando, seus timeout client e timeout server são muito curtos.

Eles provavelmente estão bem para um servidor da Web atingir o DB, pois a conexão só é aberta pelo tempo que for necessário, e cada carregamento de página cria uma nova conexão.

Para permitir que as conexões permaneçam abertas por 10 minutos, altere

timeout server 5000
timeout client 5000

para

timeout server 10m
timeout client 10m

Você pode ir ainda mais longe se quiser. Eu tenho clusters RDS que têm um tempo limite de 7 horas e funciona muito bem.

Os documentos têm mais detalhes sobre cliente de tempo limite , timeout server e a abreviação usada para o especificador de tempo .

    
por 21.10.2015 / 15:40
-2

Tente configurar o max_allowed_packet no mariaDB. Aqui está um link relativo que pode resolver seu problema.

http://stackoverflow.com/questions/10474922/error-2006-hy000-mysql-server-has-gone-away
    
por 21.10.2015 / 02:21