当前位置: 首页 > article >正文

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撰写的关于这个功能的介绍。

原文网址:https://lefred.be/content/mysql-8-2-transparent-read-write-splitting/

作者: 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,再也没有不将工作负载分配到副本的借口了!


http://www.kler.cn/a/104815.html

相关文章:

  • postgresql14管理(六)-备份恢复
  • 前端伪进度条实现(仿antd message使用react组件静态方法)
  • 举个栗子!Quick BI 技巧(3):创建趋势分析表
  • Mybit-Plus
  • WKWebView iOS17设置UserAgent
  • 编写虚拟UART驱动程序-框架
  • 童装服饰小程序商城的效果如何
  • Java SE 学习笔记(十三)—— 日志框架
  • Springboot之拦截器Interceptor
  • asyncio教程
  • 【目标检测】非极大值抑制NMS的原理与实现
  • C/C++输出整数 2020年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 记录nvm use node.js版本失败,出现报错: exit status 1: ��û���㹻��Ȩ��ִ�д˲�����
  • 群面的技巧
  • 如何实现两栏布局?这篇文章告诉你所有的细节!
  • influxdb基本使用及其源码解析
  • Ubuntu 安装 npm 和 node
  • RabbitMQ原理(四):MQ的可靠性
  • 【linux】SourceForge 开源软件开发平台和仓库
  • 云游数智农业世界,体验北斗时空智能