mysql-proxy 的 administration 接口可以通過任何 mysql 用戶端按照标準協定進行通路。你可以通過 administration 接口擷取 proxy 伺服器的整體資訊 - 向 proxy 建立的标準連接配接是處于隔離狀态的,其模拟了直接連接配接到後端 mysql 伺服器的情形。
在 mysql-proxy 0.8.0 或者更早的版本中,一組最基本的接口已被添加到 proxy 中。在後續版本中,這種方式已被替換,你必須要使用的 administration 腳本以連接配接到 administration 接口。
為了使用 administration 接口,需要通過 --admin-username 和 --admin-password 選項指定連接配接 admin 伺服器所需的使用者名和密碼。同樣必須通過 admin-lua-script 腳本選項指定提供通路 administration 服務所需接口的 lua 腳本。
例如,你可以使用下面的腳本建立一個通路 mysql-proxy 系統内部元件基本接口,由 diego medina 提供:
上述腳本需要配合下面的 proxy 腳本一起使用,名字為 reporter.lua :
為了使用上述腳本,首先需要将第一個腳本儲存為檔案(在下面的例子中檔案名為 admin.lua ),第二個命名為 reporter.lua ,然後通過指令指定 mysql-proxy 執行的 admin 腳本和後端 mysql 伺服器:
<a href="http://my.oschina.net/moooofly/blog/111776#">?</a>
1
2
<code>shell> mysql-proxy --admin-lua-script=admin.lua --admin-password=password \ »</code>
<code> </code><code>--admin-username=root --proxy-backend-addresses=127.0.0.1:3306 -proxy-lua-script=reporter.lua</code>
在另外一個視窗中,通過 proxy 連接配接 mysql 伺服器:
3
4
5
6
7
8
9
10
<code>shell> mysql --user=root --password=password --port=4040</code>
<code>welcome to the mysql monitor. commands end with ; or \g.</code>
<code>your mysql connection</code><code>id</code> <code>is 1798669</code>
<code>server version: 5.0.70-log gentoo linux mysql-5.0.70-r1</code>
<code>type</code><code>'help;'</code> <code>or</code><code>'\h'</code> <code>for</code> <code>help. type</code><code>'\c'</code> <code>to</code><code>clear</code> <code>the buffer.</code>
<code>mysql></code>
在第三個視窗中,使用指定的使用者名和密碼連接配接 mysql-proxy 的 admin 服務:
<code>shell> mysql --user=root --password=password --port=4041 --host=localhost</code>
<code>your mysql connection</code><code>id</code> <code>is 1</code>
<code>server version: 5.0.99-agent-admin</code>
為了監視 proxy 的狀态資訊,可以請求目前活動進行的清單資訊:
<code>mysql> show proxy processlist;</code>
<code>+</code><code>---------+---------------------+--------------------------+</code>
<code>| id | ip address |</code><code>time</code> <code>|</code>
<code>| 1798669 | 192.168.0.112:52592 | wed jan 20 16:58:00 2010 |</code>
<code>1 row</code><code>in</code> <code>set</code> <code>(0.00 sec)</code>