网站首页 > 技术文章 正文
我们一直在等待的 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 的配置文件中看到生成的读写分离的设置:
[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 辅助实例或副本群集中的辅助实例)。
原文:https://blogs.oracle.com/mysql/post/mysql-82-transparent-readwrite-splitting
更多技术文章,请访问:https://opensource.actionsky.com/
猜你喜欢
- 2025-10-19 思科交换机,路由器如何关闭telnet 开启ssh服务
- 2025-10-19 FileZilla搭建FTP服务器图解教程_ftp怎么搭建
- 2025-10-19 深入VRRP 1 Vitual Router Redundancy Protocol
- 2025-10-19 精通Vue(10):vue-router(3)监控$route
- 2025-10-19 精通Vue(9):vue-router(2)路由嵌套如何实现的
- 2025-10-19 安装宽带时,ONU工作模式:桥接模式和路由器模式有啥区别?
- 2025-10-19 光猫的路由模式和桥接模式有啥区别?哪个更快?
- 2024-08-11 Vue实战051:各种懒加载技术实现(vue懒加载实现原理)
- 2024-08-11 手写vue路由(vue路由使用步骤)
- 2024-08-11 H3C路由器在企业网络中的常用操作
- 最近发表
-
- 用Cursor开启JAVA+AI生涯_javascirpt怎么开启
- 大数据调度服务监控平台_大数据调度是什么意思
- SpringBoot、MyBatis、Vue搭建一个Java企业应用开源框架源码分享
- 大数据技术之Flume_大数据volume的含义
- Jenkins运维之路(Slave容器节点)_jenkins slave工作原理
- 程序员自救指南:IDEA 卡成狗?我的 9G 堆内存调参表让你起飞 附避坑
- JMeter:一个简单的测试计划怎么做?
- Windows 命令行终端 PowerShell 美化计划
- JDK25即将发布!新特性概览_jdk52.0
- JDK 25 新特性极简总结(2025 年 9 月 16 日发布,LTS 长期支持)
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)