上周就看到了mysql-proxy出来的消息,今天下午才抽空体验了一下
1. 编译-安装
http://forge.mysql.com/wiki/MySQL_Proxy下载mysql-proxy的代码,
./configure报错,找不到lua包,然后下lua包,再./confgure,又报
错,找不到glib,再去下glib,这次ok了,make下来生成了一个
mysql-proxy的可执行文件,执行一下./mysql-proxy --help有help信息
输出,这一步搞定,看了一下文档,依赖的包:
libevent lua glib mysqlclient
2. 运行,配置
主页上有个getting started,粗看了一遍,没有配置文件,就一个mysql
-proxy可执行文件加上执行参数(比较爽),
主要的执行参数:
--admin-address=<ip:port> admin server的ip:port,admin server是
一个伪代理,可以用mysql客户端连过来,但只支持一些特殊的查看proxy
状态的一些指令
--proxy-address=<ip:port> 代理的ip:port,默认是0.0.0.0:4040
--proxy-read-only-address=<ip:port> 代理的只读连接ip:port 默认0.0.0.0:4042(试了一下好像没有作用)
--proxy-backend-addresses=<ip:port> db server的地址,默认是127.0.0.1:3306,可以指定多个来做failover和load balance
--proxy-profiling enable profiling of queries (没试)
--proxy-fix-bug-25371 fix bug #25371 (mysqld > 5.1.12) for older libmysql versions (没试)
--proxy-lua-script=<file> lua脚本文件
运行./mysql-proxy --admin-address=127.0.0.1:4041 &,这样代理服务器运行在4040端口,admin服务器在
127.0.0.1:4041,转发db server为127.0.0.1:3306,没有lua-script
然后运行mysql --host 127.0.0.1 --port 4040
show database; use mysql; select user,代理工作正常。
3. 持续工作
-学习lua脚本
-测试多个backend时候的failover 和load balance的行为
-如何使用lua来实现后端多个切分的数据库对前端client的透明(用proxy的主要目的)
-如何达到client-proxy大量连接 proxy-db少量连接,来增加db的并发能力,目前看
好像是client-proxy-db一对一连接的方式