这是我目前的testing设置:
负载均衡使用心跳连接到彼此,并且它们都运行MySQL-Proxy。
一切都像魅力一样。 其中一个SQL服务器死亡,一切都保持不变。 其中一个LB死亡,一切都保持不变。
但是,在检查正在使用哪个SQL服务器时,我注意到它总是相同的,除非该服务器不可用。
几个小时后,SQL1例如有600.000个查询,而SQL0有20.000。
有没有一种方法可以更好地平衡呢,SQL0近50%,SQL1约50%?
这是我开始代理的基本路线:
/usr/bin/mysql-proxy --proxy-skip-profiling -b 0.sql.domain.com:3306 -b 1.sql.domain.com:3306 --keepalive -P :3306
作为certificate,这里从昨天下午开始每10分钟进行一次testing。

MySQL代理是基于连接的。 您提到了您的问题中的查询,如果您有一个打开一个连接并对其执行100,000个查询的框,则可以使用该查询作为示例,它们将全部转到相同的后端服务器。 您可以通过查看源代码来validation这一点:
mysql-proxy-0.8.2/src/network-conn-pool.c: 182 GQueue *conns = network_connection_pool_get_conns(pool, username, NULL); 183 184 /** 185 * if we know this use, return a authed connection 186 */ 187 if (conns) { 188 entry = g_queue_pop_head(conns);
只是抓住游泳池旁的下一个连接。 如果您查看您正在使用的ODBC的TCP连接数量,它们应该会达到50/50。
您可以考虑增加ODBCconfiguration中针对您的应用程序的数据库连接数量,以便以这种方式扩展查询负载。