Mysql-proxy实现MySQL读写分离

之前写过ProxySQL实现MySQL数据库的读写分离,今天再来一个MySQL-Proxy实现MySQL的读写分离!

操作很简单!

实验环境:

防火墙关闭
主库:172.25.1.2 主机名:node2
从库:172.25.1.3 主机名:node3
主库和从库以实现基于GTID的主从复制!
Mysql-proxy:172.25.1.5 主机名:node5

我用的包是mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
软件版本不一样可能会有报错,服务启动失败。

在proxy端:

[root@node5 ~]# tar -zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/
[root@node5 ~]# cd /usr/local/
[root@node5 local]# ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
[root@node5 mysql-proxy]# mkdir log
[root@node5 mysql-proxy]# mkdir conf
#编写配置文件
[root@node5 mysql-proxy]# vim conf/mysql-proxy.conf
[root@node5 mysql-proxy]# cat conf/mysql-proxy.conf 
[mysql-proxy]
proxy-address=0.0.0.0:3306  			#端口
proxy-backend-addresses=172.25.1.2:3306           #master
proxy-read-only-backend-addresses=172.25.1.3:3306 	#只读slave
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua	#lua脚本路径
pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid		#mysql-proxy.pid路径
plugins=proxy
log-file=/usr/local/mysql-proxy/log/mysql-proxy.log		#日志文件路径
log-level=debug						#日志水平
keepalive=true
daemon=true

[root@node5 bin]# chmod 0660 /usr/local/mysql-proxy/conf/mysql-proxy.conf	#授权
#启动
[root@node5 bin]# ./mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf 			
[root@node5 bin]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2628/mysql-proxy 	#可以看到mysql-proxy启动成功

在主库:

[root@node2 ~]# mysql -uroot -p
#创建一个用户
root@localhost [(none)]>create user 'rw'@'172.25.1.%' identified by 'rw123';
Query OK, 0 rows affected (0.01 sec)
#授权
root@localhost [(none)]>grant all on *.* to 'rw'@'172.25.1.%';
Query OK, 0 rows affected (0.00 sec)
#刷新
root@localhost [(none)]>flush privileges;
Query OK, 0 rows affected (0.00 sec)

测试:

我的测试端是node1,172.25.1.1

#装一个mysql命令
[root@node1 log]# yum install mysql -y
#远程连接
[root@node1 log]# mysql -h 172.25.1.5 -urw -prw123

在这里插入图片描述
测试读写分离:

查看我的lua脚本:

[root@node5 etc]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
在这里插入图片描述可以看到这有一个连接数,代表这何时触发lua脚本,实现读写分离!

我现在关掉我的从库node2

在这里插入图片描述
然后测试端node1去测试:

  • 可以看到没有触发读写分离,读写都在主库
    在这里插入图片描述

退出数据库再连接:(增加数据库的连接数)

  • 可以看到还没有触发,读写依然都是在master’
    在这里插入图片描述

  • 退出数据库,再连接,可以看到读写分离实现,读在从库
    在这里插入图片描述

  • 启动从库。自动从主库同步数据
    在这里插入图片描述

  • 测试端node1再查看表,在从库上读取成功
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值