你能够经过使用嵌入式 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