龙空技术网

Mysql读写分离

9号巨星 4902

前言:

当前朋友们对“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输出日志

mysql_proxy服务启动日志

5.此时可以使用第三方的客户端工具进行连接

使用navicat连接mysql_proxy

6.连接成功后,即可看到我们之前创建的test库,及master和salve中的账号root可见的库

7.注意,配置文件中有写mysql_proxy对master有读写权限,对于salve只读,也可参考输出日志,但mysql-proxy会优先读取slave中的数据,若slave挂了,才会读取master中的数据

8.测试

1>为了更好的测试,我们先关掉从服务器的slave

关闭从服务器的salve

2>此时在mysql-proxy中插入一条新的数据

插入数据成功

3>对比master和slave中的数据行

master中新增了数据,salve没有变化

4>此时使用mysql_proxy查询user表中的数据

表中数据与slave中表数据一致,即读取的salve中的数据

5>停掉salve服务,再次使用mysql-proxy查询user表中数据

此时读取的master中的数据

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读写分离