MySQL 8.2 引入透明的读写分离

MySQL 8.2 的读写分离功能正式发布

Oracle 近日宣布了 MySQL 8.2 的正式发布,该版本引入了备受期待的读写分离(Read/Write Splitting)功能。这一功能旨在优化数据库的性能和可扩展性,无需对应用程序进行任何修改。

读写分离功能简介

读写分离允许应用程序透明地将所有写操作定向到读写(主节点或源)实例,而将所有读操作定向到只读实例。这些只读实例可以是 InnoDB 集群中的从节点,或者副本集群中的主节点或从节点。MySQL 社区经理 Frederic Descamps 解释说:

在大规模应用中,我们通常在副本之间分配读操作,但这需要在应用程序中进行管理:将写操作指向某个地方,而将读操作指向另一个地方。MySQL 8.2 中,MySQL Router 现在能够识别读写操作,并将它们分别路由到 InnoDB 集群中的主节点(写操作)或从节点(读操作)。

使用读写分离功能时,每个客户端会话可以与一个读写和一个只读目标进行通信,路由器会将每个查询分类为读或写,并将其定向到相应的后端。

社区反应与疑问

Percona 创始人兼开源倡导者 Peter Zaitsev 对此功能表示赞赏,但也提出了疑问:

MySQL 8.2 的这个功能很棒!但尚不清楚在这种情况下,读操作的一致性级别是否有保证。是否会读取到过时的数据?如果是,会有多过时?

PingCAP 的软件架构师 Sunny Bains 也补充道:

MySQL 组复制提供了时间线一致性,除非路由器能够跟踪副本之间的一致性,否则路由器无法做得更好。这似乎可行,但将需要通过轮询进行往返,或者集群向路由器发送某种类型的事件通知。

连接与路由

通过读写端口(默认 6450)连接到 MySQL 时,如果执行读操作,连接将到达副本(从节点);如果开始事务,连接将到达复制源(主节点)。

版本更新与新功能

今年早些时候,Oracle 改变了 MySQL 的版本控制模式,引入了创新版本和长期支持(LTS)版本。MySQL 8.2.0 是最新的季度创新版本,包含了错误修复、安全补丁和新功能。改进包括:

  • 集合操作的哈希表优化
  • MySQL Enterprise Firewall 的增强
  • 支持智能卡、安全密钥和生物识别阅读器等设备的 WebAuthn 认证方法

总结

MySQL 8.2 的读写分离功能被认为是优化数据库性能和可扩展性的重要工具,不仅提升了用户体验,还简化了数据库的管理和部署。MySQL 8.2.0 已在 Oracle 官网上提供下载。

阅读 28
0 条评论