MySQL Proxy 位于应用与 MySQL 之间,通过 Lua 脚本(rw-splitting.lua)实现 SELECT 路由至 Slave、写操作路由至 Master。本文记录 Ubuntu 10.04 完整搭建过程。
应用仅连接 Proxy,对后端拓扑透明。
apt-get install lua5.1apt-get install mysql-proxy(版本 0.8.0)vim /usr/share/mysql-proxy/rw-splitting.luamin_idle_connections 与 max_idle_connections 改为 1,否则需 4 连接才触发分离mkdir /var/log/mysql-proxy && touch /var/log/mysql-proxy/mysql-proxy.logsudo mysql-proxy \
--proxy-read-only-backend-addresses=192.168.1.145:3306 \
--proxy-backend-addresses=192.168.1.126:3306 \
--proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua \
>/var/log/mysql-proxy/mysql-proxy.log &netstat -ant | grep 4040 应见 LISTENmysql -u user -p -P4040 -h 192.168.1.147# /etc/mysql-proxy.cnf (权限 660)
[mysql-proxy]
admin-username=admin
admin-password=pass
admin-lua-script=/usr/share/mysql-proxy/admin-sql.lua
proxy-backend-addresses=192.168.1.126:3306
proxy-read-only-backend-addresses=192.168.1.145:3306
proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua
log-file=/var/tmp/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true
max-open-files=1024
启动:mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
keepalive,最稳方案是每应用节点部署一 Proxy(Sidecar 模式)old_password(16 位),需 SET PASSWORD = PASSWORD('new')