mysql proxy使用教程_mysql 基于mysql-proxy实现读写分离

81312376346ade3b46adbfc50bd78ab1.pngmysql 读写分离

读写分离首先不推荐使用,很多业务场景也没有必要,不仅增加技术复杂度,而且可能会导致读到落后的数据,建议优化数据库,推荐使用keepalive+mysql双主复制的方案

然后mysql-proxy是官方推出的中间件,不仅无法高可用,而且这个项目已经夭折了,使用mysql-route了,本次仅记录mysql-proxy的安装过程。

mysql-proxy不再支持mysql5.7以后的client客户端登录

一、环境描述

0479e8aa8621ad445ac3f8136ca9e81d.png

mysql读写分离原理是master与slave进行主从同步的前提下,让master库处理增、删、改、更新操作,而slave库处理查询操作,达到缓解mysql主数据库的压力

mysql-proxy是官方提供的mysql中间件服务,客户端无需修改任何设置,mysql-proxy将app应用的sql请求,根据转发规则,并基于lua脚本实现数据读写分离与负载均衡的需求。

系统版本 centos7.8

mysql-proxy 192.168.197.128

主mysql 192.168.197.129

从mysql 192.168.197.130

二、安装mysql主从同步

yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

yum -y install mariadb-server mariadb mariadb-libs

具体主从配置mysql5.7主从复制配置

注意:由于mysql-proxy不再支持 mysql5.7以上的访问mysql访问后端server,故只参考里面的配置文件即可,不用安装mysql5.7

三、安装mysql-proxy

1.登录mysql-proxy

创建proxy系统用户

useradd -r mysql-proxy

mkdir -p /usr/local/mysql-proxy

cd /usr/local/mysql-proxy

wget http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-el6-x86-64bit.tar.gz

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

mv mysql-proxy-0.8.4-linux-el6-x86-64bit/* /usr/local/mysql-proxy/

c5810a185e9314130b615c0dd5987322.png

2.添加环境变量

echo -e ‘

export PATH=/usr/local/mysql-proxy/bin/:$PATH

‘ >> /etc/profile && source /etc/profile

3.启动MYSQL-Proxy中间件

方法一:直接命令启动

mysql-proxy --daemon --log-level=debug --user=mysql-proxy --keepalive --log-file=/var/log/mysql-proxy.log --plugins="proxy" --proxy-backend-addresses="192.168.197.129:3306" --proxy-read-only-backend-addresses="192.168.197.130:3306" --proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

方法二:(推荐)添加配置文件启动

mkdir -p /usr/local/mysql-proxy/conf

mkdir -p /usr/local/mysql-proxy/log

vim /usr/local/mysql-proxy/conf/mysql-proxy.conf

[mysql-proxy]

user=mysql-proxy

admin-username=admin

admin-password=admin

#proxy-address=192.168.197.128:3306

proxy-backend-addresses=192.168.197.129:3306

proxy-read-only-backend-addresses=192.168.197.130:3306

admin-lua-script=/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua

proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid

log-file=/usr/local/mysql-proxy/log/mysql-proxy.log

plugins=admin,proxy

log-level=debug

keepalive=true

daemon=true

chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf

启动

/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf

4.查看端口

netstat -lntp | grep mysql

e6ef9da83dc412bb1c6978148d05e832.png

4040 代理监听,web对外接口

4041 管理模块监听,查询proxy自身的状态

5.查看proxy的运行状态

#账号密码由步骤3中的启动代码指定,具体如下

#--plugins=admin --admin-username="admin" --admin-password="admin" --admin-lua-script="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua"

mysql -h 192.168.197.128 -uadmin -padmin -P4041 -e ‘select * from backends;‘

81cd89c5705b52320ee50d7b08bec7b6.png

提示unknown,所以需要在master与slave数据库添加对proxy进行访问授权

6.登录master与slave 添加远程访问权限

grant all on *.* to [email protected]‘%‘ identified by "Huawei12#$";

flush privileges;

7.proxy使用4040端口登录主从数据库

mysql -h192.168.197.128 -uroot -pHuawei12#$ -P4040 -e ‘show databases;‘

退出数据库,使用admin登录查看proxy状态

mysql -h 192.168.197.128 -uadmin -padmin -P4041 -e ‘select * from backends;‘

通过授权连接后,proxy显示主从up状态

mysql 基于mysql-proxy实现读写分离

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值