2012-02-16 96 views
0

我刚刚安装了mysql proxy 0.8.2,并开始使用它。我将它与两台MySQL 5.5服务器一起使用,在3306上监听,代理服务器在4040上运行。哦,操作系统是Win 7 32位。MySQL代理和基本故障转移(检测状态)

我的问题是,检查服务器状态的mysql代理似乎不应该。

我启动脚本,并且它应该运行。但是,当我关闭主服务器,剧本似乎并没有认识到 - 它仍然会尝试连接到它...

版本信息

mysql-proxy 0.8.2 
chassis: mysql-proxy 0.8.2 
glib2: 2.16.6 
libevent: 1.4.12-stable 
LUA: Lua 5.1.2 
package.path: C:\ProgramX86\dev\mysql-proxy\lib\mysql-proxy\lua\?.lua 
package.cpath: C:\ProgramX86\dev\mysql-proxy\bin\lua-?.dll 
-- modules 
proxy: 0.8.2* 

我的配置

[mysql-proxy] 
proxy-address = :4040 
proxy-backend-addresses = 10.3.0.9:3306,192.168.4.100:3306 
proxy-lua-script = C:/ProgramX86/dev/mysql-proxy/failover3.lua 
daemon = true 

故障转移LUA脚本

function connect_server() 
    if proxy.global.backends[1].state == proxy.BACKEND_STATE_DOWN then 
     proxy.connection.backend_ndx = 2 
    else 
     proxy.connection.backend_ndx = 1 
    end 
    print ("s Connecting: " .. proxy.global.backends[proxy.connection.backend_ndx].dst.name) 
end 

function read_query(packet) 
    if proxy.global.backends[1].state == proxy.BACKEND_STATE_DOWN then 
     proxy.connection.backend_ndx = 2 
    else 
     proxy.connection.backend_ndx = 1 
    end 
    print ("q Connecting: " .. proxy.global.backends[proxy.connection.backend_ndx].dst.name) 
end 

回答

1

这是因为proxy.global.backends[1].state仍然proxy.BACKEND_STATE_UP当主服务器关闭时。 有人说,等待后端响应需要3分钟,而不是一直观看Mysql服务。 我正在尝试找到解决问题的更好方法。