2012-02-16 6 views
0

私はmysql proxy 0.8.2をインストールしました。私は3306でリッスンしている2つのMySQL 5.5サーバーと一緒に使用しています。プロキシは4040で動作しています。ああ、OSは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プライマリサーバーがシャットダウンされます。 誰かが、MySQLのサービスを常時監視するのではなく、バックエンドの応答を待つのに3分かかると言いました。 私はこの問題を解決するためのより良い方法を見つけようとしています。