MySQL 官宣:支持读写分离了!!

我们一直在等待的 MySQL 读/写分离功能 现在终于可以使用了!

在规模上,我们在副本之间分配读取,但这必须在应用程序中以某种方式进行管理:指向在某个地方写入并在其他地方读取。

在 MySQL 8.2 中,MySQL Router 现在能够识别读取和写入,并将它们路由到主实例(如果是 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 ReplicaSet对象中看到路由器:

使用读/写端口连接到MySQL(6450):

可以看到,默认情况下,如果我们执行读操作,会连接到副本(或者非主实例),但如果我们启动一个事务,将连接到复制源(主实例),这个过程会在同一个连接中自动完成,并且不需要应用更改端口。

我们还可以看到在使用只读事务时的区别:

我们可以在MySQL Router的配置文件中看到为R/W分割生成的设置:

[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次实例或Replication Cluster中的次实例)。

享受MySQL,没有更多的借口不把工作负载分散到副本!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值