Re: Mysql persistent tcp balance problem.

From: XANi <xani666#gmail.com>
Date: Wed, 4 Nov 2009 02:08:39 +0100


On Tue, 03 Nov 2009 16:21:04 +0100, "Dawid Sieradzki / Gadu-Gadu S.A." <dawid.sieradzki#gadu-gadu.pl> wrote:
> Hi,
>
> Mysql persistent tcp balance problem.
>
> MYSQL CLIENT ---- [CONN A] ----> LB TCP ---- [CONN B] ----> MYSQL
> DAEMON
>
> When we did error on MYSQL daemon site (CONN B - BACKEND IS MARKED AS
> DOWN), haproxy will switch new connection to another mysql daemon.
> But current connections (CONN A) stay on broken line (CONN B)
>
> The question is how to switch current mysql client connections hanged
> on haproxy to new MYSQL backend ?
>
> Greetings
>

You mean situation that

1.App is connecting [CONN A]
2.Does some queries
3.Then backend dies
4.Application wants to do more queries but backend dont respond and
timeout after x seconds, then app sends "DB connection refused" ??

If yes, only way (IMO) to do it in haproxy (as it knows nothing about MySQL protocol) is:
1.set a short timeouts, like 10s
2.make application code like:

execute_query();
if (query_failed() && we_tried_to_reconnect_less_than_5_times()) {  reconnect;
 try_query again
}

so when connection dies, instead of failin request it tries again and get dispatched to other backen

PS. Jak wyłączyć w gg filtrowanie URLi od nieznajomych ? :D:D

-- 
Mariusz Gronczewski (XANi) <xani666#gmail.com>
GnuPG: 0xEA8ACE64
http://devrandom.pl


Received on 2009/11/04 02:08

This archive was generated by hypermail 2.2.0 : 2009/11/04 02:15 CET