MySQL 8.2 支持读写分离!

我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了!

在规模上,我们在副本之间分配读取,但这必须在应用程序中以某种方式进行管理:指向在某个地方写入并在其他地方读取。

MySQL 8.2 中,MySQL Router 现在能够识别读取和写入,并将它们路由到主实例(如果是 InnoDB 集群),或者路由到异步复制源以进行写入,将其路由到辅助实例或副本以进行读取。

为了说明这一点,我部署了最简单的架构:MySQL InnoDB ReplicaSet。

MySQL InnoDB ReplicaSet

这只是一个复制源实例和一个(或多个)异步副本:

这是 MySQL Shell 中 ReplicaSet 对象的状态:

启动 MySQL Router 8.2

让我们配置(启动)MySQL Router:

我们还可以在 MySQL Shell ReplicaSet 对象中看到 Router:

使用读/写端口 ( 6450 ) 连接到 MySQL:

我们可以看到,默认情况下,如果执行读操作,我们将访问到副本,但如果启动事务,我们将到达复制源(主),而无需更改端口并使用相同的连接。

我们还可以看到使用只读事务时的差异:

我们可以在 MySQL Router 的配置文件中看到生成的读写分离的设置:

ini 复制代码
[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= 在会话中定义要访问的实例类型:

结论

综上所述,MySQL Router 8.2 支持读写分离。这是一项很有价值的功能,可以优化数据库性能和可扩展性,而无需对应用程序进行任何更改。

通过此配置,您可以将所有读取流量定向到只读实例,并将所有写入流量定向到读写实例。

此功能不仅增强了整体用户体验,还简化了数据库管理和部署。

读写实例是主实例或源实例。只读实例是副本(InnoDB Cluster ReplicaSet、ReplicaSet 辅助实例或副本群集中的辅助实例)。

原文:blogs.oracle.com/mysql/post/...

更多技术文章,请访问:opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

相关推荐
SadSunset几秒前
(15)动态SQL中的if,foreach和一些其他的常用标签
数据库·python·sql
问道飞鱼2 分钟前
【数据库知识】MySQL 数据库备份与还原详细解读
数据库·mysql·备份·还原
马克学长6 分钟前
SSM实验室设备管理系统8gr9f(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·实验室设备管理·设备预约
+VX:Fegn089513 分钟前
计算机毕业设计|基于springboot + vue在线考试管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
DreamNotOver19 分钟前
使用 Django 测试脚本验证用户角色与权限:自动化测试用户仪表盘访
数据库·mysql·django·sqlite
萝卜青今天也要开心24 分钟前
2025年下半年系统架构设计师考后分享
java·数据库·redis·笔记·学习·系统架构
子夜江寒25 分钟前
MySQL 安装与配置指南(CentOS 7)
数据库·mysql·centos
DemonAvenger41 分钟前
Redis集群架构详解:从单机到分布式的扩展之路
数据库·redis·性能优化
CHANG_THE_WORLD1 小时前
Python 文件操作详解与代码示例
开发语言·数据库·python
TT哇1 小时前
关闭外键约束检查
数据库·sql·oracle