关于MySQL-proxy实现读写分离的方法
小标 2018-03-05 来源 :网络 阅读 592 评论 0

摘要:MySQL-proxy实现读写分离 前提:准备3台安装mysql的centos6,其中两台已经实现mysql集群主从复制

MySQL-proxy实现读写分离


前提:准备3台安装mysql的centos6,其中两台已经实现mysql集群主从复制


1、安装mysql-proxy


1.1官网下载mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz并上传到centos服务器的/usr/local目录下


1.2 解压mysql-proxy


cd /usr/local


tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz


修改解压后的文件名(主要为了方便)


mv mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy


创建用户组


groupadd mysql-proxy


创建用户


useradd -g mysql-proxy mysql-proxy


cd /mysql-proxy


更改目录属主和属组,“.”表示当前目录


chown -R root:mysql-proxy .


配置mysql-proxy环境变量


vi /etc/profile


在最后配置export PATH=$PATH:/usr/local/mysql-proxy/bin


让配置文件生效


source /etc/profile


测试是否安装成功


mysql-proxy --help-all,若有出现mysql-proxy的相关文档信息则表示成功


2、使用命令启动mysql-proxy,参数信息在往下第4步骤配置文件启动时会说明


mysql-proxy --daemon --log-level=debug --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.88.129:3306" --proxy-read-only-backend-addresses="192.168.88.131:3306"


查看启动日志


[root@localhost mysql-proxy]# tail /var/log/mysql-proxy.log
2017-12-28 21:53:47: (critical) plugin proxy 0.8.5 started
2017-12-28 21:53:47: (debug) max open file-descriptors = 1024
2017-12-28 21:53:47: (message) proxy listening on port :4040
2017-12-28 21:53:47: (message) added read/write backend: 192.168.88.129:3306
2017-12-28 21:53:47: (message) added read-only backend: 192.168.88.131:3306


查看监听的端口,4040为mysql-proxy默认端口,有信息则表示已启动

netstat -ntulp | grep :4040


关闭服务

killall -9 mysql-proxy


3、现在我们需要在master服务器中创建一个远程登入的mysql账号,由于master和slave服务器已经同步,因此在slave服务器都会又这个用户


创建用户:

CREATE USER 'synuser'@'%' IDENTIFIED BY '123456';

授权:GRANT ALL PRIVILEGES ON *.* TO 'synuser'@'%';


在slave服务器测试登陆mysql-proxy服务

mysql -usynuser -p123456 -h192.168.1.112 --port=4040


4、实现完以上安装和测试后,接下来开始实现读写分离,mysql-proxy服务本身是没有读写分离功能的,需要依赖lua脚本实现


在proxy服务器机器上关闭服务

killall -9 mysql-proxy


检查是否关闭

netstat -ntlup | grep 4040


关闭后开始配置mysql-proxy


cd /usr/local/mysql-proxy

创建脚本存放目录


mkdir lua


将管理脚本和读写分离配置文件复制到lua目录


cp share/doc/mysql-proxy/rw-splitting.lua ./lua #复制读写分离配置文件


cp share/doc/mysql-proxy/admin-sql.lua ./lua #复制管理脚本


修改rw-splitting.lua配置文件(实际配置时将注释删掉)


vi /lua/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, #默认8,改为1
is_debug = false
}

配置启动文件,(实际配置时将注释删掉)


vi /etc/mysql-proxy.cnf
[mysql-proxy]
user=root #运行mysql-proxy用户,好像没什么作用
admin-username=synuser #主从mysql共有的用户
admin-password=123456 #用户的密码
proxy-address=192.168.88.132:4040 #mysql-proxy运行ip和端口,不加端口,默认4040
proxy-read-only-backend-addresses=192.168.88.131 #指定后端从slave读取数据
proxy-backend-addresses=192.168.88.129 #指定后端主master写入数据
proxy-lua-script=/usr/local/mysql-proxy/lua/rw-splitting.lua #指定读写分离配置文件位置
admin-lua-script=/usr/local/mysql-proxy/lua/admin-sql.lua #指定管理脚本
log-file=/var/log/mysql-proxy.log #日志位置
log-level=info #定义log日志级别,由高到低分别有(error|warning|info|message|debug)
daemon=true #以守护进程方式运行
keepalive=true #mysql-proxy崩溃时,尝试重启
#保存退出!
chmod 660 /etc/mysql-porxy.cnf

5、配置完之后就可以使用mysql-proxy --defaults-file=/etc/mysql-proxy.cnf 启动mysql-proxy


6、测试


在master服务器登陆synuser,使用 test数据库创建tb_test表


在slave服务器登陆synuser


然后关闭slave服务器的slave服务


在proxy服务器登陆mysql -usynuser -p123456 -h192.168.88.132 --port=4040

use test;
insert into tb_test value(......)


在在master服务器查询tb_test:select * from tb_test,发现表中有数据,在在slave服务器查询tb_test:select * from tb_test,发现表中无数据,证明写操作只在master服务器进行


在在proxy服务器查询tb_test:select * from tb_test,发现表中没有数据,证明读操作在slave服务器上进行


本文由职坐标整理并发布,了解更多内容,请关注职坐标MySQL数据库频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程