Py学习  »  DATABASE

牛掰,MySQL 8.2 支持读写分离了!

java1234 • 1 年前 • 310 次点击  

大家好,我是锋哥。

  • MySQL InnoDB ReplicaSet
  • 启动 MySQL Router 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 的配置文件中看到生成的读写分离的设置:

[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 辅助实例或副本群集中的辅助实例)。

来源:juejin.cn/post/7295304057656918026

End


锋哥简介:
Java1234_小锋,真名:曹锋,前世界500强央企软件工程师,12年Java,Python老司机,技术专家,资深Java,Python讲师,小锋网络科技 光杠司令员,司令部:www.java1234.comwww.python222.com每天坚持锻炼身体,坚持早睡早起,崇尚自由,平时喜欢带带Java学员 (已经成功指导2000+学员高薪就业),喜欢搞搞Java技术自媒体,搞搞产品,后期继续研究主流技术,包括大数据,人工智能等。锋哥在公众号里整理了一份Java从入门到入土高级视频+Java常见笔试面试题+Java优秀简历模版,有需要的,可以关注下锋哥java1234公众号,回复【资料】领取。


    最近锋哥开始收Java学员啦!

2024年粉丝福利 
http://download.java1234.com/
每月免费送 666 套Java海量资源网站 VIP会员,供大伙一起学Java
如果没加过锋哥微信的
加一下锋哥助理微信备注 VIP 即可开通
👇👇👇
图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/182679