MySQL-proxy和基本故障转移(检测状态)

我刚刚安装了mysql proxy 0.8.2,并开始学习它。我与两个MySQL 5.5服务器一起使用,它们监听3306端口,代理正在4040上运行。哦,OS是Win 7 32位。

我的问题是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

原文链接 https://stackoverflow.com/questions/9311160

点赞
stackoverflow用户1268556
stackoverflow用户1268556

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

2012-03-14 09:25:27