一、mysql-proxy简介
mysql-proxy是mysql官方提供的mysql中间件服务,上游可接入若干个mysql-client,后端可连接若干个mysql-server,它使用mysql协议,任何连接mysql的上游无需任何更改即可迁移至mysql-proxy上。
mysql-proxy最基本的用法,就是作为一个请求拦截,请求中转的中间层:
进一步的,mysql-proxy可以分析与修改请求。拦截查询和修改结果,需要通过编写Lua脚本来完成。mysql-proxy允许用户指定Lua脚本对请求进行拦截,对请求进行分析与修改,它还允许用户指定Lua脚本对服务器的返回结果进行修改,加入一些结果集或者去除一些结果集均可。
【SK画外音:sql拦截与修改,性能分析与监控,读写分离,请求路由等各种功能都是通过编写Lua脚本来完成的,mysql-proxy是个框架,具备很好的扩展性。这个框架提供了6个hook点,能够让用户能够动态的介入到client与server中的通讯中去。】
二、mysql-proxy命令参数
版本显示
使用--version参数即可:
./mysql-proxy --version
从输出可以看到mysql-proxy的版本,以及依赖的glib,libevent,lua的版本
1 mysql-proxy0.8.3
2 chassis: mysql-proxy 0.8.3
3 glib2: 2.16.6
4 libevent: 1.4.13-stable
5 LUA: Lua 5.1.4
8 -- modules
9 proxy: 0.8.3
简单启动
mysql-proxy启动至少需要指定一个后端mysql的ip和端口号,此时带上--proxy-backend-addresses参数即可:
./mysql-proxy --proxy-backend-addresses=127.0.0.1:3306
指定配置文件启动
mysql-proxy亦可以指定配置文件启动,此时带上--defaults-file来指定配置文件即可:
./mysql-proxy --defaults-file=./mysql-proxy.cnf
mysql-proxy.cnf的格式如下:
1[mysql-proxy]
2proxy-backend-addresses = 127.0.0.1:3306
需要注意,在命令行中参数前需要加入“--”,而在配置文件中则不需要。
寻求帮助
可以使用--help,或者--help-all
./mysql-proxy --help
./mysql-proxy --help-all
Proxy常用选项
选项 |
说明 |
proxy-backend-addresses=$host:$port |