MySQL读写分离怎么实现

发布时间:2021-12-04 13:36:19 作者:iii
来源:亿速云 阅读:221

这篇文章主要介绍“MySQL读写分离怎么实现”,在日常操作中,相信很多人在MySQL读写分离怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL读写分离怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MySQL读写分离怎么实现

随着业务量的发展和数据量的增长,单机版本的数据库很难满足业务需要,而MySQL最常见的性能扩展方法是“读写分离”,其本质是将访问压力分散到多个MySQL节点上,但存储压力并没有分散,“分库分表”可以分散访问和存储压力,但是实现难度维护成本都会大幅增加。

MySQL读写分离怎么实现

▲读写分离架构图▲

MySQL读写分离怎么实现

业界实现MySQL的“读写分离”有两种常见方法,客户端实现和代理实现,两种方法各有利弊,需要结合各自业务特点、系统架构、运维能力来选择实现。因为引入代理会使系统架构更加复杂,同时代理自身要考虑性能、高可用、稳定性等因素,中小公司一般使用客户端方法实现读写分离。而大公司有资源去投入数据库代理的开发和维护,当接入的业务越多,带来的价值就越明显。

首先说下客户端实现方法,例如java语言可以基于MyBatis和Hibernate简单封装后,即可实现读写分离,架构图如下:

MySQL读写分离怎么实现

代理实现方法,需要引入数据库代理,实现读写分离和数据库管理功能,代理兼容SQL协议,对于客户端来说代理就是数据库,架构图如下:

MySQL读写分离怎么实现

对比两种架构的优缺点:

MySQL读写分离怎么实现

无论哪种架构,实现逻辑并不复杂,但是有一个细节需要特别注意:MySQL主从复制延迟。

MySQL的复制是异步的,尽管针对不同延迟的原因有响应的优化方案,但是延迟是客观存在的,是不可能百分百避免的。当只读出现较大延迟的时候,就会出现数据不一致,读到的数据是主库提交前的,称之为“过期读”,这时业务上可能就会出现问题。常见的解决方法有:

MySQL读写分离怎么实现

京东智联云RDS-MySQL支持“读写分离代理”功能,创建只读实例后,开启读写分离代理,就可以在程序中配置读写代理的地址,由读写代理实现读请求被自动转发到只读实例,写请求被自动转发到主实例。目前MySQL5.6-8.0,Percona和Mariadb都支持开启只读代理。详细介绍信息见:https://docs.jdcloud.com/cn/rds/create-readwriteproxy

下面从该功能的数据面和控制面来介绍下基本原理和最佳实践。

MySQL读写分离怎么实现

用户在创建读写分离代理的时候会配置只读库延迟、健康检查、负载均衡策略等参数,根据用户业务特点,实现读写分离功能。

京东智联云“读写分离代理”创建界面如下:

MySQL读写分离怎么实现

  1. 只读实例延迟阈值:只读实例与主实例的延迟超过阈值后,只读实例将从读写代理后端被移除。

  2. 负载均衡策略:读写代理分发读写请求的负载均衡策略,支持最少活跃连接数、最少连接数、最小同步时延、平均响应时延。

  3. 连接超时时间:只读实例健康检查的方法。超时后只读实例将从读写代理后端被移除。

  4. 重复次数:只读实例健康检查的方法。重试次数超过指定次数后,只读实例健康检查失败,将从读写代理后端被移除。

  5. 检查时间间隔:只读实例健康检查的方法,根据时间间隔对读写代理后端的只读实例进行健康检查。

最佳实践:只读实例延迟阈值根据业务特点配置,默认时间是100s,强烈建议该值大于检查时间间隔时间。

通过RDS控制台,可以管理“读写分离代理”的整个生命周期,包括创建、修改配置、删除和开启公网访问。除此之外,“读写分离代理”还可以感知转发MySQL实例的高可用切换、修改配置流程、只读实例的创建和删除。

  1. 高可用切换,当转发的MySQL发生主从高可用切换的时候,“读写分离代理”会自动调整写请求转发到新的主库上;

  2. 修改配置,当转发的MySQL主从实例或者只读实例触发扩容、缩容的业务流程时,“读写分离代理”会自动调整将读写请求转发到新的实例;

  3. 只读实例的创建和删除,“读写分离代理”会在用户添加新只读实例后,根据负载均衡算法,自动转发请求到新只读实例;当用户删除只读实例后,“读写分离代理”会自动停止转发请求到已删除的只读实例。

到此,关于“MySQL读写分离怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. Mysql -- 读写分离
  2. 安装mysql-proxy实现mysql读写分离

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:MySQL身份鉴别怎么实现

下一篇:数据库可以分为哪几类

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》