天天看點

【原創】MySQL Proxy - 使用

       存在許多種使用 mysql proxy 的不同方法。采用最基本用法,你可以允許 mysql proxy 将來自用戶端的 query 透傳到後端的一個伺服器。如果打算讓 mysql proxy 在這種模式下工作,你隻需要在指令行上指定 proxy 打算連接配接的 backend server 的資訊: 

<a href="http://my.oschina.net/moooofly/blog/111775#">?</a>

1

<code>shell&gt; mysql-proxy --proxy-backend-addresses=sakila:3306</code>

       如果你指定了多個後端 mysql 伺服器,proxy 将按照輪詢的方式為用戶端與後端的每一個伺服器建立連接配接。假設你有兩個 mysql 伺服器 a 和 b 。第一個要進行連接配接的用戶端會被連接配接到伺服器 a 上,第二個會連接配接到伺服器 b 上,第三個又會連接配接到 a 上,例如: 

2

3

<code>shell&gt; mysql-proxy \</code>

<code>     </code><code>--proxy-backend-addresses=narcissus:3306 \</code>

<code>     </code><code>--proxy-backend-addresses=nostromo:3306</code>

       當你以上述方式指定了多個後端伺服器,proxy 将會自動檢測後端伺服器的可用性,當出現不可用時會進行标記。新連接配接會被自動的配置設定到目前可用的伺服器上面,并且會在 mysql-proxy 的标準輸出上報告警告資訊: 

<code>network-mysqld.c.367: connect(nostromo:3306) failed: connection refused</code>

<code>network-mysqld-proxy.c.2405: connecting to backend (nostromo:3306) failed, marking it as down</code><code>for</code> <code>...</code>

       通過lua 腳本可以提供更細粒度的行為控制,包括對連接配接的控制、對分發的控制,以及對 query 和結果集的處理控制。當使用 lua 腳本時,你必須在指令行上通過選項 --proxy-lua-script 指定腳本的名字: 

<code>shell&gt; mysql-proxy --proxy-lua-script=mc.lua --proxy-backend-addresses=sakila:3306</code>

       當你指定了一個腳本,該腳本直到一個連接配接被建立時才會被讀取。這意味着腳本自身的錯誤要到其真正被執行的時候才會被觸發。腳本錯誤不會對向後端 mysql 伺服器分發 query 的行為産生影響。 

[note] 

       因為腳本直到連接配接建立時才會被讀取,你可以在 proxy 處于運作狀态的情況下對 lua 腳本的内容進行修改,而修改後的内容會在下一次新連接配接建立時自動被使用。這使得 mysql proxy 可以再無需重新開機的前提下使得行為發生改變。

繼續閱讀