设为首页 收藏本站
查看: 706|回复: 0

[经验分享] mysql读写分离的安装和配置(mysql_proxy)

[复制链接]

尚未签到

发表于 2016-9-11 08:01:26 | 显示全部楼层 |阅读模式
  简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。当然,这样proxy机器可能成为单点失效,但完全可以使用多个proxy机器做为冗余,在应用服务器的连接池配置中配置到多个proxy的连接参数即可。
环境如下:写数据库:192.168.0.111
  读数据库:192.168.0.113
  mysql-proxy:192.168.0.112
安装过程如下:
1. 解压mysql-proxy
下载已经编译好的安装包,或者预编译安装包均可,在这里,使用预编译版本。
tar zxf mysql-proxy-0.6.1-linux-rhas4-x86.tar.gz
cd mysql-proxy-0.6.1-linux-rhas4-x86
  2.将lua脚本放到/usr/local/share下
mv sbin/mysql-proxy /usr/local/sbin/
mv share/mysql-proxy /usr/local/share/
3.删除符号连接等垃圾代码
strip /usr/local/sbin/mysql-proxy
4.编译启动管理脚本:
  vi /etc/init.d/mysql-proxy
#!/bin/bash
export LUA_PATH=/usr/local/share/mysql-proxy/?.lua
mode=$1
if [ -z "$mode" ] ; then
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-270529-1-1.html 上篇帖子: (转)源码编译安装mysql 5.1 下篇帖子: mysql查询过慢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表