你能夠經過使用嵌入式 Lua 腳本語言對 MySQL Proxy 的行爲進行控制,以使得其可以對發送給 MySQL 服務器的 query 和 response 進行操縱。
下圖展示了 MySQL Proxy 中使用的類的總覽。
在 MySQL Proxy 和服務器之間的主要交互功能是經過 Lua 腳本定義的一個或者多個函數。根據客戶端與一個或者多個 backend MySQL servers 之間通訊序列中不一樣的事件和操做,定義以下一些關鍵函數:
connect_server(): 該函數在每次有來自客戶端到 MySQL Proxy 的鏈接發生時被調用。你能夠在作負載均衡(load-balancing)功能時使用該函數以攔截原始鏈接,而後再經過策略決定客戶端將要鏈接的服務器。若是你沒有定義一個肯定方案,默認狀況下,一個簡單的輪詢(round-robin)類型的分發方式將被採用。
下表中列出了 MySQL proxy 和服務器的通訊函數,提供的信息,以及當函數被觸發時的信息流方向。
Function Supplied Information Direction connect_server() None Client to Server read_handshake() None Server to Client read_auth() None Client to Server read_auth_result() None Server to Client read_query() Query Client to Server read_query_result() Query result Server to Client