【原創】MySQL Proxy - connect_server()

15.7.4.3. Capturing a Connection with connect_server()


       當 proxy 接受了來自 MySQL 客戶端的鏈接時,connect_server() 函數被觸發。


       該函數沒有任何參數,可是你能夠使用 proxy.connection 表信息,甚至能夠對該表進行修改。該表信息對每個客戶端會話都是惟一的。


       例如,若是你有多個 backend servers ,你能夠經過設置 proxy.connection.backend_ndx 的值爲有效的服務器號來指定當前鏈接使用哪一個服務器。下面的代碼基於以分鐘表示的當前時間是奇數仍是偶數的方式,在兩臺服務器之間進行選擇。


function connect_server()
        print("--> a client really wants to talk to a server")
        if (tonumber(os.date("%M")) % 2 == 0) then
                proxy.connection.backend_ndx = 2
                print("Choosing backend 2")
        else
                proxy.connection.backend_ndx = 1
                print("Choosing backend 1")
        end
        print("Using " .. proxy.global.backends[proxy.connection.backend_ndx].dst.name)
end


       該例子一樣打印了存儲在內部結構 proxy.global.backends 表中的 IP地址/port 的組合字符串。
相關文章
相關標籤/搜索