MySQL Proxy
http://baike.baidu.com/link?url=m8Tpf7rCcqfPlj75cHmkUKlI6eBPmPN73KQxqmzE7oMVXgtM_lxJ36R6f-DkmO3NXmXPwrj6s8XdGYhFbMWFC_
MySQL Proxy是一个处于你的client端和MySQL
server端之间的简单程序,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。
[1]
MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个
连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现
读写分离和
负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL
Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为
冗余,在
应用服务器的
连接池配置中配置到多个proxy的连接参数即可。
MySQL Proxy更强大的一项功能是实现“
读写分离”,基本原理是让主数据库处理
事务性查询,让从库处理SELECT查询。数据库复制被用来把
事务性查询导致的变更同步到集群中的从库。
附mysql-proxy 的所有语法命令:
$ mysql-proxy --help-all
Usage:
mysql-proxy [OPTION...] - MySQL Proxy
Help Options:
-?, --help Show help options
--help-all Show all help options
--help-admin Show options for the admin-module
--help-proxy Show options for the proxy-module
admin module
--admin-address=<host:port>listening address:port of
internal admin-server (default: :4041)
proxy-module
--proxy-address=<host:port>listening address:port of the
proxy-server (default: :4040)
--proxy-read-only-backend-addresses=<host:port>address:port
of the remote slave-server (default: not set)
--proxy-backend-addresses=<host:port>address:port of the
remote backend-servers (default: 127.0.0.1:3306)
--proxy-skip-profiling disables profiling of queries (default:
enabled)
--proxy-fix-bug-25371 fix bug #25371 (mysqld >5.1.12) for
older libmysql versions
--proxy-lua-script=<file>filename of the lua script
(default: not set)
--no-proxy Don‘t start proxy-server
Application Options:
-V, --version Show version
--daemon Start in daemon-mode
--pid-file=<file>PID file in case we are started as
daemon