Mysql-proxy实现MySQL读写分离
程序员文章站
2022-05-02 10:04:13
...
之前写过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端:
[aaa@qq.com ~]# tar -zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/
[aaa@qq.com ~]# cd /usr/local/
[aaa@qq.com local]# ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy
[aaa@qq.com mysql-proxy]# mkdir log
[aaa@qq.com mysql-proxy]# mkdir conf
#编写配置文件
[aaa@qq.com mysql-proxy]# vim conf/mysql-proxy.conf
[aaa@qq.com 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
[aaa@qq.com bin]# chmod 0660 /usr/local/mysql-proxy/conf/mysql-proxy.conf #授权
#启动
[aaa@qq.com bin]# ./mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
[aaa@qq.com 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启动成功
在主库:
[aaa@qq.com ~]# mysql -uroot -p
#创建一个用户
aaa@qq.com [(none)]>create user 'rw'@'172.25.1.%' identified by 'rw123';
Query OK, 0 rows affected (0.01 sec)
#授权
aaa@qq.com [(none)]>grant all on *.* to 'rw'@'172.25.1.%';
Query OK, 0 rows affected (0.00 sec)
#刷新
aaa@qq.com [(none)]>flush privileges;
Query OK, 0 rows affected (0.00 sec)
测试:
我的测试端是node1,172.25.1.1
#装一个mysql命令
[aaa@qq.com log]# yum install mysql -y
#远程连接
[aaa@qq.com log]# mysql -h 172.25.1.5 -urw -prw123
测试读写分离:
查看我的lua脚本:
[aaa@qq.com etc]# vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
可以看到这有一个连接数,代表这何时触发lua脚本,实现读写分离!
我现在关掉我的从库node2
然后测试端node1去测试:
- 可以看到没有触发读写分离,读写都在主库
退出数据库再连接:(增加数据库的连接数)
-
可以看到还没有触发,读写依然都是在master’
-
退出数据库,再连接,可以看到读写分离实现,读在从库
-
启动从库。自动从主库同步数据
-
测试端node1再查看表,在从库上读取成功
上一篇: mysql-proxy读写分离
下一篇: mysql读写分离的实现