MySQL 代理和基本故障转移(检测状态)

标签 mysql proxy lua failover mysql-proxy

我刚刚安装了 mysql proxy 0.8.2,并开始使用它。我将它与两台 MySQL 5.5 服务器一起使用,监听在 3306 上,代理运行在 4040 上。哦,操作系统是 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

最佳答案

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

关于MySQL 代理和基本故障转移(检测状态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311160/

相关文章:

php - 消息: Operand should contain 1 column(s)

php - jQuery 自动完成结果应显示为组合框

python - 有反向代理能力的纯Python网络服务器?

ios - lua require 函数在 iOS 上找不到我需要的文件

php - 使用 PHP 动态添加列到 MySQL 数据库

MySQL 8 : Subquery using JSON_TABLE not working unless subquery result is manually entered

windows - git被阻塞,如何安装npm模块

c# - 如何仅在向其端口发出 HTTP 请求时启动 Windows Web 服务?

syntax - 是否可以在 Lua 中复制 Ruby 的 method_missing?

audio - 我如何在8位8khz参数中采样音频文件说.wav