0

私は mysql プロキシ 0.8.2 をインストールして、それで遊んでみました。3306 でリッスンしている 2 台の MySQL 5.5 サーバーと一緒に使用しています。プロキシは 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
4

1 に答える 1

1

これproxy.global.backends[1].stateは、まだproxy.BACKEND_STATE_UPプライマリ サーバーがシャットダウンされているためです。Mysql サービスを常に監視するのではなく、バックエンドの応答を待つのに 3 分かかると誰かが言いました。問題を解決するためのより良い方法を見つけようとしています。

于 2012-03-14T09:25:27.927 に答える