MySQL 8.2 – 透明的读写分离(译)

编程入门 行业动态 更新时间:2024-10-24 23:21:48

MySQL 8.2 – <a href=https://www.elefans.com/category/jswz/34/1768258.html style=透明的读写分离(译)"/>

MySQL 8.2 – 透明的读写分离(译)

在MySQL 8.2的版本中,MySQL Router能自动分辨对数据库读写/操作并把这些操作路由到正确的实例上,这是要革众多SQL中间件的命!大家说这个算不算遥遥领先呢?

关于号主,姚远:

  • Oracle ACE(Oracle和MySQL数据库方向)。
  • 华为云最有价值专家。
  • 《MySQL 8.0运维与优化》的作者。
  • 拥有 Oracle 10g、12c和19c OCM等数十项数据库认证。
  • 曾任IBM公司数据库部门经理,服务2万+客户。
  • 精通C和JAVA,发明两项计算机专利

这里号主翻译了知名MySQL布道师Frédéric Descamps撰写的关于这个功能的介绍。

原文网址:/

作者: Frédéric Descamps,Oracle公司MySQL社区经理,知名MySQL布道师 。

我们一直在等待它!它现在已经可用了!MySQL中的读/写分离!!

在大规模应用中,我们将读操作分发到副本之间,但这需要在应用程序中进行管理:将写操作指向某处,将读操作指向另外的地方。

在MySQL 8.2中,MySQL路由器现在能够识别读操作和写操作,并将它们路由到InnoDB集群的主实例,或将写操作路由到异步复制源,而将读操作路由到非主实例或副本。

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

MySQL InnoDB ReplicaSet

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

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

启动MySQL Router 8.2

让我们配置(引导)MySQL Router:

mysqlrouter --bootstrap root@127.0.0.1:3306 --user mysqlrouter


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


通过读写端口(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集群的非主实例、ReplicaSet的非主实例或复制集群中的非主实例)。

享受MySQL,再也没有不将工作负载分配到副本的借口了!

更多推荐

MySQL 8.2 – 透明的读写分离(译)

本文发布于:2023-12-03 08:37:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1653299.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:透明   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!