最近,Oracle 宣布MySQL 8.2正式可用,包括对读写分离的支持。这一备受期待的特性已经在最新的创新版本中引入,有助于优化数据库性能和提升可扩展性。
读写分离使应用程序能够将所有写入流量定向到读写(主要或源)实例,将所有读取流量定向到只读实例,这些实例是 InnoDB Cluster 的附属实例,或者是 Replica Cluster 的主实例或附属实例。MySQL 社区经理Frederic Descamps解释说:
我们在副本之间分配读取流量,但这需要在应用程序中通过某种方式来管理:将写入流量指向某个地方,将读取流量指向其他地方。MySQL 8.2 的 MySQL Router 现在能够识别读取和写入流量,并将它们路由到 InnoDB Cluster 的主实例,或者将写入流量路由到异步复制源,将读取流量路由到附属实例或副本。
使用读写分离,每个客户端会话可以与一个 read_write 和一个 read_only 目标通信,路由器会将每个查询分类为读取或写入,并将其定向到适当的后端。Percona 创始人兼开源布道师 Peter Zaitsev表示:
这是 MySQL 8.2 的一项重大特性!不过尚不清楚在这种情况下对读取是否有一致性级别的保证。是否可以读取过时的数据?如果可以,过时多久?
客户端使用读写端口(默认为 6450)连接到 MySQL,如果进行读取,连接将到达副本(附属),如果启动了事务,它们将到达复制源(主实例)。
社区普遍对这一新特性表示赞赏,但 PingCAP 软件架构师Sunny Bains表示:
MySQL Group Replication 提供了时间线一致性,路由器无法做得更好,除非路由器能够跟踪副本间的一致性,这似乎是可行的,但需要通过轮询或群集向路由器发送某种事件通知来实现。
Descamps 总结道:
这是一项有价值的特性,可以优化数据库性能和提升可扩展性,且无需对应用程序做任何更改……这个特性不仅增强了整体用户体验,还简化了数据库的管理和部署。
在今年早些时候,Oracle 更改了 MySQL 的版本模型,引入了创新和 LTS 版本。MySQL 8.2.0是最新的季度创新版本,包含了错误修复、安全补丁和新特性,改进包括:用于集合操作的哈希表优化、MySQL Enterprise Firewall 的增强以及支持智能卡、安全密钥和生物识别读卡器等设备的新的 WebAuthn 身份验证方法。
MySQL 8.2.0 已正式可用,可以从 Oracle 网站下载。
原文链接:
https://www.infoq.com/news/2023/11/mysql-read-write-splitting/
评论