文章目录

  • 一、读写分离的概念
  • 二、引入中间件MyCat
  • 三、MyCat服务端口和管理端口

一、读写分离的概念

读写分离是基于主从复制来实现的。在实际的应用环境中,肯定是读操作多,就像我们在电商平台上去购买东西,可能看了100个也就买了一两个。所以读操作永远比写这种更新操作多很多。所以我们基于主从复制的读写分离配置,就是让一个主库专门用来做数据的修改,写的时候专门在主库上写,主库通过主从复制把数据的更改通过binlog同步到从库上去,那么其他的客户端查询的请求都会最终映射到从库上去,而我们一个主库带上两三个从库,主库专门用来做数据的更新(写操作),从库专门用来做读操作这样一来可以很好的分摊读写的压力,不用全部都集中在主库上,对于后端服务的并发处理能力有很大的提高,另外就是它的高可用容灾,当主库挂了以后,可以把指定的从库变成主库。

MySQL client通过mysql 提供的API,用mysql自定义的基于TCP的数据协议(简称mysql协议)与MySQL Server通信,访问MySQL Server数据库。

如果只有一台服务器(单机环境),所有数据的增删改查都是在一台服务器上进行,随着我们的服务被越来越多的人使用,流量逐渐变大,需要并发能力逐渐提升,所以如果我们发现数据库性能到瓶颈了,我们可以做读写分离操作,提高后台服务。


图中的MySQL主服务器专门做写操作,下面连着2个MySQL从服务器专门做读操作,读请求转发到B、C,写请求转发到A。

如果我们在客户端上直接用代码写死,insert、update等写操作在A上做,show、select等读操作在B、C上做,相当于代码和主从环境就是强绑定的。这就导致代码的稳定性不太好,因为和环境强相关了,我们写代码得时候必须得知道哪个机器是负责写操作的主库,哪个机器是负责读操作的从库,由代码来选择。而这时如果有某个机器挂掉了,代码也不会知道,还是按照原来的方式转发请求,通信就会出现问题,所以把读写分离用代码实现肯定不合适。所以在实际的解决方案中,读写分离需要依赖数据库的中间件

二、引入中间件MyCat

实际上,读写分离,分库分表都是需要依赖数据库中间件(mycat),mycat就是代理服务器的角色。

客户端实际上区分不出来连的是MyCat还是MySQL,因为通信都是遵守的是MySQL通信协议,之前怎么和MySQL通信,现在就怎么和MyCat通信,所以不用进行区分。

在MyCat上配置读写分离,我们在客户端上的代码不用做任何变更,代码上不需要区分哪个请求是读,哪个请求是写,代码直接访问的是MyCat,由MyCat解析请求,根据SQL的读写性质转发到负责相应操作的服务器,实现读写分离。

在MyCat上需要配置主服务器和从服务器的信息,有3种情况:一主一从、一主多从、多主多从

一主多从场景:当写库(master)挂了,MyCat还可以马上把一个从库(slave)直接变成一个写库(master),那相当于又回到一台机器的处理,因为从库和从库之间并没有主从复制的配置,所以我们还需要把变成写库的从库还要和其他从库之间配置一下主从复制。

多主多从:

可以看到图中,MyCat服务器挂了两套环境,如果其中1套的主库宕机了(它对应的从库也就不能用了),此时MyCat会自动切到另一套环境,因为M1和M2之间也是配置成互为主从的,所以M2可以同步M1的数据,提供与M1环境完全相同的服务,所以它的高可用容灾能力是非常不错的。

三、MyCat服务端口和管理端口

  1. MySQL的服务端口是3306,MyCat服务端口是8066(这个端口也是可以改的),也就是MySQL Client连接的是8066端口,登录8066端口看到的界面就和登录MySQL Server的3306端口一样。
  2. MyCat还有一个管理端口9066,登录这个管理端口可以查看MyCat正在工作的所有状态以及和后端服务器的连接,以及连接数据源的状态等。

MySQL读写分离原理相关推荐

  1. Linux基础学习九:Mysql读写分离原理以及详细搭建步骤

    在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,无论是在安全性.高可用性还是高并发等各个方面都是完全不能满足实际需求的. 因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的 ...

  2. mysql读写分离实现_脱离开发:Mysql读写分离方案之一

    案例:Mysql读写分离 技能目标: · 熟悉MySQL主从复制原理 · 熟悉MySQL读写分离原理 · 学会配置MySQL主从复制 · 学会配置MySQL读写分离 6.1 案例分析 6.1.1 案例 ...

  3. MySQL——读写分离 理论+实操!!!

    一.MySQL读写分离原理 读写分离就是只在主服务器上写,只在从服务器上读 主数据库处理事务性査询,而从数据库处理 select査询 数据库复制被用来把事务性査询导致的变更同步到集群中的从数据库 读写 ...

  4. php mysql读写分离主从复制_mysql主从复制 读写分离原理及实现

    主从复制,读写分离原理 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的.无论是在安全性.高可用性还是高并发等各个方面都是完全不能满足实际需求的.因此,通过主从复制的 ...

  5. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  6. mysql 读写分离

    mysql实现主从复制 读写分离 MySQL主从数据库同步延迟问题解决 读写分离原理:让主数据库(master)处理事务性增.删.改操作(INSERT.UPDATE.DELETE),而从数据库(sla ...

  7. mysql++读写BLOB数据

    mysql++读写BLOB数据 1.使用sql_create_n宏函数,建立数据库表字段与对象.    #define sql_create_2(NAME, CMP, CONTR, T1, I1, T ...

  8. proxy实现 mysql 读写分离

    实现 mysql 读写分离 图解: 环境: iptables 和 selinux 关闭 proxy:test2 172.25.1.2 Master: test3 172.25.1.3 Slave:te ...

  9. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)

    当项目中数据库表越来越多,数据量也逐渐增多时,需要做数据库的安全和性能的优化.对于数据库的优化,可以选择使用MySQL读写分离实现. 1.MySQL主从同步 1.主从同步机制 1.1.主从同步介绍和优 ...

  10. asp.net mysql 读写分离_MySQL读写分离

    MySQL读写分离 1,为啥要读写分离? 系统到了高并发阶段,数据库一定要做的读写分离了,因为大部分的项目都是读多写少.所以针对这个情况,把写操作放一个主库,主库下挂多个从库处理读操作,这样就可以支撑 ...

最新文章

  1. pandas dataframe调整列的位置
  2. div固定大小文字溢出自动缩小_CSS样式更改——框模型、定位、浮动、溢出
  3. what to look if you want to debug your docsify based website
  4. Android studio中git密码记住的问题
  5. Java PipedOutputStream close()方法与示例
  6. Elasticsearch 之 数据索引
  7. 域名实名认证多长时间_域名如何选择有利于网站优化?
  8. y7000怎么刷电池固件_redmi(红米)AC2100,刷老毛子固件
  9. maven分模块构建项目工程
  10. 从你的全世界路过-人到难处需放胆
  11. vscode 开发maven项目(springboot项目)
  12. 常用的计算机辅助存储器有,重学大学计算机教程--辅助存储器(磁盘、磁带、固态硬盘)...
  13. 泰戈尔《飞鸟集》节选
  14. 如何统计excel中的sheet数量
  15. 嵌入式服务器appweb交叉编译指南
  16. 【自学编程】C语言编程简单的小程序,计算长方体体积!
  17. VMware Tanzu Kubernetes Grid介绍
  18. 温度热电阻Pt100转电流电压信号分配器,转换器
  19. 第6章 国外著名数据库系统
  20. 关于秒杀场景的全面分析总结

热门文章

  1. 跨三服务器维护,DNF卢克跨区再度波动?策划:不是很想维护跨三服务器了
  2. 基于Web的酒店客房管理系统的设计与实现
  3. 计算机拒绝访问移动硬盘,移动硬盘拒绝访问怎么办
  4. ecshop怎么写原生php,ecshop二次开发的简单实例
  5. 小鸡模拟器android,安卓小鸡模拟器运行总结~
  6. ESP32 INMP441麦克风驱动
  7. 视频教程-思科CCNP专题系列①:路由技术原理-思科认证
  8. QT cmd强制删除文件
  9. 百度网盘客户端使用的一些小窍门
  10. 华为VRRP-基于交换机的VRRP配置