mysql-proxy配置

来源:互联网 发布:淘宝直播浮现权开通 编辑:程序博客网 时间:2024/06/12 01:30

 


1.下载mysql-proxy-0.6.1-linux-rhel4-x86-32bit版本,下载地址为

http://mirrors.dotsrc.org/mysql/Downloads/MySQL-Proxy/

2.解压mysql-proxy-0.6.1-linux-rhel4-x86-32bit

tar –zxvfmysql-proxy-0.6.1-linux-rhel4-x86-32bit.tar.gz

3.启动mysql-proxy

    ./mysql-proxy --admin-address=:4401 --proxy-address=:3307 --proxy-read-only-backend-addresses=192.168.18.33:3306 192.168.18.187:3306 --proxy-backend-addresses=192.168.18.30:3306 --proxy-lua-script=/home/ouyl/mysql/mysql-proxy-0.6.1-linux/share/mysql-proxy/mysqlnew.lua &
 


附:

1) Mysqlproxy的lua脚本:
Mysqlproxy mysql proxy 可以在LUA文件定义一个或者几个函数,从而来控制代理与mysql server交互的过程以及结果,具体的函数如下 ,
init(), connect_server(), read_handshake(), send_handshake(),
read_auth(), send_auth(), read_auth_result(), send_auth_result(),
read_query(), read_query_result(), send_query_result(), cleanup()
connect_server() — 这个函数每次client连接的时候被调用,可以用这个函数来处理负载均衡,决定当前的请求发给那个后台的服务器,如果没有指定这个函数,那么就会采用简单的轮询机制。

read_handshake() — 这个函数在server返回初始握手信息时被调用,可以调用这个函数在验证信息发给服务器前进行额外的检查。

read_auth() — client发送验证信息给服务器的时候会调用这个函数。

read_auth_result() — 服务器验证信息返回后调用这个函数。

read_query() — 每次client发送查询请求函数的时候被调用,可以用这个函数进行查询语句的预处理,过滤掉非预期的查询等等,这个是最常用的函数。

read_query_result() — 查询结果返回是调用的函数,可以进行结果集处理。
 
应用程序可以通过lua脚本重写这些方法,定制自己需要的功能
Connect_server():
可以修改连接参数,实现负载平衡
通过启动命令指定连接的后台服务器:
Mysql-proxy—proxy-backend-addresses=192.168.95.136
在该函数中可以通过,设置proxy.backend.backend_ndx=1来指定需要连接的服务器
 
Read_query(packet):
该方法内可以不对请求做任何修改
可以纠正拼写错误,slect,CRATE等修改为select,create
过滤请求,批量删除
根据一定的策略重写请求的sql语句
添加可能漏掉的语句
注意:如果需要重写proxy,需要将命令加入到待发送队列:
Proxy.queries.append(1,string.char(proxy.COM_PROXY),’SHOW DATABASES’)
然后return PROXY_SEND_QUREY 表示从query队列中发送请求 

Read_query_result(injection_packet):
可以根据自己的需要定制返回结果,应用非常灵活
如果需要返回自己构造的resultset,需要返回:
Proxy.PROXY_SEND_RESULT
如果需要丢弃结果,需要返回:
Proxy.PROXY_IGNORE_RESULT
 
 
 附:

2) mysqlproxy的主要命令:
       --help-all显示所有的帮助选项
       --admin-address=host:port 管理主机及端口,默认是4041
       --proxy-address=host:port 代理服务器的监听地址及端口,默认4040
       --proxy-read-only-address=host:port 只读连接时,代理服务器的监听地址及端口。默认4042
       --proxy-backend-addresses=host:port连接真实服务器的地址及监听端口,默认是3306,这是mysql代理最重要的选项,多个          主机之间用空格隔开。
       --proxy-lua-script=file 指定lua脚本的名称

原创粉丝点击