学习笔记—数据库—MySQL的读写分离

MySQL的读写分离

  MySQL的读写分离架构,就是说,由master主服务器来处理涉及到INSERT、UPDATE、DELETE等事务性的写操作,而由slave从服务器来从主服务器复制数据,处理读操作。

  通过这种架构,有利于将压力分散到多个节点,提升整体的访问性能,同时,也能更好利用只读副本,提升资源利用率,并且增加可伸缩性和数据的安全性,避免宕机对用户的影响。

  主从复制:读写分离需要在主从复制的基础上实现,首先,是通过配置一个MySQL的主从复制的集群来实现读写分离,在主服务器上进行写操作,将更新操作同步到从服务器上,让从服务器进行读操作,也是非常好的一种方式。

  MySQL的读写分离有几种实现方式:

  在应用层进行实现:首先,最好想但是也最困难的是,就是说,直接在应用层通过动态数据源切换来实现读写分离。这个样子不需要引入中间件,并且理论上来说,对于任何数据库都是合适的,但是侵入性太强,需要根据具体的service来注入不同的数据源。

  通过中间件转发:此外,也可以通过中间件转发读写操作,比如MySQL Proxy,这是官方出的一个轻量级的数据库中间件,可以实现读写分离,进行故障的自动切换、负载均衡、连接池等功能,还有比如阿里的Cobar。

  第三方组件的实现方式:除了中间件,还可以考虑采用第三方组件来处理读写请求,比如非常常见的是一个sharding-jdbc,这是一个开源的JAVA分库分表框架,提供了一种简单而灵活的方式来实现数据的分片和读写分离,适用于高并发和大数据量的场景。并且,在springboot中使用非常简单。

MySQL读写分离的实现

  在这里分别就三种实现示例如下:

在应用层进行实现

  

  

  

  

  

  

  

  

通过消息中间件转发

  

  

  

  

  

  

  

  

第三方组件的实现方式

  

  

  

  

  

  

  

  

  


学习笔记—数据库—MySQL的读写分离
https://gagaducko.github.io/2024/09/30/学习笔记—数据库—MySQL的读写分离/
作者
gagaduck
发布于
2024年9月30日
许可协议