MySQL Router 8.2.0 GA

2023-11-01 16:34:03 浏览数 (2)

MySQL Router 8.2.0于2023年10月25日正式发行。该版本带来了大家期待已久的读写分离功能。

MySQLRouter通过配置读写分离,可以将所有读流量定向到只读实例,将所有写流量定向到读写实例。读写实例可以是InnoDB Cluster中的主成员或InnoDB Replica中的主机。只读实例是InnoDB Cluster中的次要成员,或者是InnoDB Replica中的主/从机。

MySQL Router将每个查询分类为读或写,并将其定向到适当的后端。也可以手动或在程序中使用“ROUTER SET”或“query_attributes”指定查询的类型。

如何配置?

要启用读写分离,MySQL Router必须启用以下选项:

  • access_mode: 必须设置为auto
  • connection_sharing: 必须设置为1
  • protocol: 必须设置为 classic
  • destinations: 必须设置为metadata-cache角色设置为“PRIMARY_AND_SECONDARY”的 URL

每个会话配置

可以通过以下选项,从命令行为每个会话定义读写分离配置:

  • ROUTER SET optionName='value'
  • query_attributes router.optionName value

optionName的值包括如下:

  • access_mode设置为以下值之一:
    • read_write:所有会话流量都发送到读写服务器。
    • read_only:所有会话流量都发送到只读服务器。
    • auto:根据事务类型选择服务器,读取指向 read_only 服务器,写入指向 read_write 服务器。
  • wait_for_my_writes [ 0 | 1 ]:如果启用1,只读查询将等待最后写入的事务。
  • wait_for_my_writes_timeout [ 0 | 4294967295 ]:在回退到 read_write 目标之前,等待 read_only 目标应用写入事务的最长时间(以秒为单位)。默认值为 1。

例如,

代码语言:javascript复制
 SQL> ROUTER SET access_mode='read_write'
 SQL> query_attribute router.access_mode read_write

引导启动

MySQL Router引导启动时,将创建如下默认配置:

代码语言:javascript复制
[router:read_write_split]
bind_port=6450
destinations=metadata-cache://mycluster/?role=PRIMARY_AND_SECONDARY
routing_strategy=round-robin
access_mode=auto
protocol=classic

[DEFAULT]
max_idle_server_connections=64

使用过程中,MySQL Router将区分SQL语句进行读写分离,详细的内容可以访问官网手册确认。

以上内容是关于MySQL Router 8.2的读写分离功能介绍,欢迎大家使用,并提出改进建议。

0 人点赞