前言:
当前朋友们对“thinkphpmysql读写分离”大体比较看重,看官们都想要分析一些“thinkphpmysql读写分离”的相关文章。那么小编同时在网络上汇集了一些关于“thinkphpmysql读写分离””的相关资讯,希望姐妹们能喜欢,你们快快来学习一下吧!准备
环境搭建:
Mysql版本:5.7.20-log
Mysql_Proxy版本:mysql-proxy-0.8.5-windows-x86-32bit(可以去mysql官网下载)
操作系统:windows10
基于上一篇的mysql主从复制进行深入。
已知条件:主服务器master(127.0.0.1:3306),从服务器slave(127.0.0.1:3308)
当前支持mysql读写分离的插件还是很多的,像Atlas,mysql_router,mycat等,读者私下了解,mysql_proxy也被现在的mysql_router取代了,以支持mysql集群,以后有时间慢慢了解
Mysql_proxy的作用
根据官方介绍,无非就以下作用:
sql拦截与修改性能分析与监控读写分离请求路由 mysql_proxy怎么实现读写分离的
1.下载并解压mysql_proxy
2.在解压包的bin目录下创建mysql-proxy.conf文件,并配置以下内容
[mysql-proxy]#用于中间件连接的用户,这里我还是用root,即主从复制的账号admin-username=root#密码admin-password=root#管理员lua脚本admin-lua-script=C:/mysql-proxy-0.8.5-windows-x86-32bit/lib/mysql-proxy/lua/admin.lua#master服务地址及端口号proxy-backend-addresses=127.0.0.1:3306#slave服务地址及端口号,多个从库用,隔开proxy-read-only-backend-addresses=127.0.0.1:3308#lua配置文件,用来设定连接参数proxy-lua-script=C:/mysql-proxy-0.8.5-windows-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua#日志文件配置,若指定文件不存在,请手动创建log-file=C:/mysql-proxy-0.8.5-windows-x86-32bit/log/mysql-proxy.log#日志输出级别log-level=debug#以守护进程方式运行daemon=true#长连接keepalive=true
3.创建install.bat文件(bin目录下)
脚本如下:
mysql-proxy -P 127.0.0.1:6218 --defaults-file=C:\mysql-proxy-0.8.5-windows-x86-32bit\bin\mysql-proxy.confdu
端口号可以任意指定,前提是没有被占用
4.运行install.bat脚本(此时确保master,slave服务开启),可以看到mysql-proxy.log输出日志
5.此时可以使用第三方的客户端工具进行连接
6.连接成功后,即可看到我们之前创建的test库,及master和salve中的账号root可见的库
7.注意,配置文件中有写mysql_proxy对master有读写权限,对于salve只读,也可参考输出日志,但mysql-proxy会优先读取slave中的数据,若slave挂了,才会读取master中的数据
8.测试
1>为了更好的测试,我们先关掉从服务器的slave
2>此时在mysql-proxy中插入一条新的数据
3>对比master和slave中的数据行
4>此时使用mysql_proxy查询user表中的数据
5>停掉salve服务,再次使用mysql-proxy查询user表中数据
6>停掉master服务,开启slave服务,用mysql-proxy对user表进行删改查,发现报错
7>进行读操作,拿不到数据,与6>同样错误
总结:
1.mysql-proxy实现了对master的读写操作,对slave的操作,但优先读取salve的数据
2.mysql-proxy可以单独实现对master的读写操作,即salve全部宕机的情况下依然可以独立工作
3.若master宕机,则整个服务器架构都存在数据不可使用的风险,即应用没办法获取数据
so,保证master服务的高可用方是读写分离的重中之重。
以上结论只针对默认配置的mysql中间件mysql_proxy。
谢谢你的浏览,如果喜欢就收藏一下,记得关注小编,大批干货等你学哦。
标签: #thinkphpmysql读写分离