👉 这是一个或许对你有用的社群
🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:
《项目实战(视频)》:从书中学,往事上“练”
《互联网高频面试题》:面朝简历学习,春暖花开
《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题
《精进 Java 学习指南》:系统学习,互联网主流技术栈
《必读 Java 源码专栏》:知其然,知其所以然
👉这是一个或许对你有用的开源项目
国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。
功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:
Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本
来源:juejin.cn/post/
7295304057656918026
我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了!
在规模上,我们在副本之间分配读取,但这必须在应用程序中以某种方式进行管理:指向在某个地方写入并在其他地方读取。在 MySQL 8.2 中,MySQL Router 现在能够识别读取和写入,并将它们路由到主实例(如果是 InnoDB 集群),或者路由到异步复制源以进行写入,将其路由到辅助实例或副本以进行读取。
为了说明这一点,我部署了最简单的架构:MySQL InnoDB ReplicaSet。
MySQL InnoDB ReplicaSet
这只是一个复制源实例和一个(或多个)异步副本:
![15fa61974e74d04c3ff6a2fd067ca105.jpeg](https://img-blog.csdnimg.cn/img_convert/15fa61974e74d04c3ff6a2fd067ca105.jpeg)
这是 MySQL Shell 中 ReplicaSet 对象的状态:
![26dadff8a148b575b8fa82ff77a3d478.jpeg](https://img-blog.csdnimg.cn/img_convert/26dadff8a148b575b8fa82ff77a3d478.jpeg)
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
视频教程:https://doc.iocoder.cn/video/
启动 MySQL Router 8.2
让我们配置(启动)MySQL Router:
![f18bd0e726d574a24e5b19757b97b707.jpeg](https://img-blog.csdnimg.cn/img_convert/f18bd0e726d574a24e5b19757b97b707.jpeg)
我们还可以在 MySQL Shell ReplicaSet 对象中看到 Router:
![bce54b37ae52b5b591b7a02dc908bd3b.jpeg](https://img-blog.csdnimg.cn/img_convert/bce54b37ae52b5b591b7a02dc908bd3b.jpeg)
使用读/写端口 ( 6450 ) 连接到 MySQL:
![0e7fdd4649e005f7aa1aee8fd8b00226.jpeg](https://img-blog.csdnimg.cn/img_convert/0e7fdd4649e005f7aa1aee8fd8b00226.jpeg)
我们可以看到,默认情况下,如果执行读操作,我们将访问到副本,但如果启动事务,我们将到达复制源(主),而无需更改端口并使用相同的连接。
我们还可以看到使用只读事务时的差异:
![1c10915df15f9551331370be5fe9aa69.jpeg](https://img-blog.csdnimg.cn/img_convert/1c10915df15f9551331370be5fe9aa69.jpeg)
我们可以在 MySQL Router 的配置文件中看到生成的读写分离的设置:
[routing:bootstrap_rw_split]
bind_address=0.0.0.0
bind_port=6450
destinations=metadata-cache://myreplica/?role=PRIMARY_AND_SECONDARY
routing_strategy=round-robin
protocol=classic
connection_sharing=1
client_ssl_mode=PREFERRED
server_ssl_mode=PREFERRED
access_mode=auto
您还可以使用命令 ROUTER SET access_mode= 在会话中定义要访问的实例类型:
![ecad711cf6f6f3f40090cd7da768fed7.jpeg](https://img-blog.csdnimg.cn/img_convert/ecad711cf6f6f3f40090cd7da768fed7.jpeg)
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
项目地址:https://github.com/YunaiV/yudao-cloud
视频教程:https://doc.iocoder.cn/video/
结论
综上所述,MySQL Router 8.2 支持读写分离。这是一项很有价值的功能,可以优化数据库性能和可扩展性,而无需对应用程序进行任何更改。
通过此配置,您可以将所有读取流量定向到只读实例,并将所有写入流量定向到读写实例。
此功能不仅增强了整体用户体验,还简化了数据库管理和部署。
读写实例是主实例或源实例。只读实例是副本(InnoDB Cluster ReplicaSet、ReplicaSet 辅助实例或副本群集中的辅助实例)。
欢迎加入我的知识星球,全面提升技术能力。
👉 加入方式,“长按”或“扫描”下方二维码噢:
星球的内容包括:项目实战、面试招聘、源码解析、学习路线。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)