0

以下に示す 3 つの Mysql ノードがあります。

Master Address: 192.168.1.77:3306
Slave1 Address: 192.168.1.76:3306
Slave2 Address: 192.168.1.69:3306

バージョン 0.8.3 の mysql-proxy を 192.168.1.67 にインストールした後、以下の構成を作成します。

[mysql-proxy]
admin-username=proxy
admin-password=proxy
admin-lua-script=/local/software/mysql-proxy/lib/mysql-proxy/lua/admin.lua
proxy-read-only-backend-addresses = 192.168.1.76:3306,192.168.1.69:3306
proxy-backend-addresses=192.168.1.77:3306
proxy-lua-script=/local/software/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/local/software/mysql-proxy/log/mysql-proxy.log
plugin-dir=/local/software/mysql-proxy/lib/mysql-proxy/plugins
plugins=proxy,admin,debug,replicant
log-level=debug
keepalive=true

編集したファイル: rw-splitting.lua

min_idle_connections = 1,
max_idle_connections = 2,

次に、次のように mysql-proxy を開始します。

./bin/mysql-proxy --defaults-file=mysql-proxy.cnf

プロキシにログオンします。

mysql -uproxy -ppassword -P4040 -h192.168.1.67

そして、select sqlを何度も実行して別のmysql-proxy 4040ウィンドウを開くと、ログから、すべてのselect sqlクエリが76の同じサーバーに送信されることがわかりましたが、76をシャットダウンした場合にのみ送信されますスレーブ 69 へのクエリ。ロード バランスが機能しない理由がわかりません。間違いを犯した場所はありますか? 前もって感謝します。

4

1 に答える 1

1

rw-splitting.lua は、実装の一部を読者の演習として残しているようです。「ランダムなバックエンドを選択してください」というコメントがありますが、その実装やラウンドロビン手法は見られません。アイドル状態の接続がない場合、コードはバックエンド サーバーをアレイ内の一番上から次のサーバーに移動するように見えます。

マスターにアイドル状態の接続が常に存在する場合、現在の実装ではそこに移動することを好みます。その後、読み取り専用バックエンド サーバー リストの最初のアイドル状態の接続を使用します。この場合、69 に移行したときにシャットダウンするまで 76 です。77 の理由がわかりません。読み取り/書き込みバックエンドが優先されません。おそらくこれは、使用可能なアイドル接続の数に関連しています。

バックエンドで現在アクティブな接続数である最小の proxy.global.backends.connected_clients を求めることは、使用するバックエンドに優先順位を付ける良い方法であるように思われます。

バランス モジュール lib/mysql-proxy/lua/proxy/balance.lua も参照してください。

于 2012-12-02T03:48:27.030 に答える