mysql读写分离的安装和配置(mysql_proxy)
mode="start"
fi
case $mode in
'start')
mysql-proxy --daemon \
--admin-address=:4401 \
--proxy-address=:3307 \
--proxy-backend-addresses=192.168.0.111:3306 \
--proxy-read-only-backend-addresses=192.168.0.113:3306 \
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua
;;
'stop')
killall mysql-proxy
;;
'restart')
if $0 stop ; then
$0 start
else
echo "retart failed!!!"
exit 1
fi
;;
esac
exit 0
5.给脚本执行权限
chmod +x /etc/init.d/mysql-proxy
启动脚本解释如下:
--daemon 采用daemon方式启动
--admin-address=:4401 指定mysql-proxy的管理端口,在这里,表示本机的4401端口
--proxy-address=:3307 指定mysql-proxy的监听端口(客户端连接指定的端口)--proxy-backend-addresses=192.168.0.111:3306 指定写操作mysql主机的端口
--proxy-read-only-backend-addresses=192.168.0.112:3306 指定只读的mysql主机端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua脚本,在这里,使用的是rw-splitting脚本,用于读写分离.
完整的参数可以运行以下命令查看:
mysql-proxy --help-all
6.修正rw-splitting.lua脚本
vi /usr/local/share/mysql-proxy/rw-splitting.lua
276-282行修改成如下:
if cmd.type ~= proxy.COM_INIT_DB and
c.default_db and c.default_db ~= s.default_db then
print(" server default db: " .. s.default_db .. "'")
print(" client default db: " .. c.default_db .. "'")
print(" syncronizing")
proxy.queries:prepend(2,string.char(proxy.COM_INIT_DB) ..c.default_db)
end
这个就解决了ERROR 1105 (07000): can't change DB to on slave xxx.xxx.xxx.xxx:3306的问题。
7.启动和关闭命令:
/etc/init.d/mysql-proxy start
/etc/init.d/mysql-proxy stop
8.客户端测试
mysql -u tongbu --port=3307 -h 192.168.0.112 -D tongbu