要启用读/写分离,必须启用以下 router
选项
-
access_mode
: 必须设置为auto
。注意可以仅为每个会话定义
read_write
和read_only
access_mode
值。请参阅每会话配置。 connection_sharing
: 必须设置为1
。protocol
: 必须设置为classic
。destinations
: 必须设置为角色设置为PRIMARY_AND_SECONDARY
的metadata-cache
URL。
可以使用以下方法之一为每个会话定义读/写分离配置
ROUTER SET
optionName
='value
'query_attributes router.
optionName
value
以下是可能的
及其值optionNames
-
access_mode
设置为以下值之一read_write
: 所有会话流量都发送到读/写服务器。read_only
: 所有会话流量都发送到只读服务器。auto
: 根据事务类型选择服务器,读取操作指向只读服务器,写入操作指向读/写服务器。
wait_for_my_writes [ 0 | 1 ]
: 如果启用,则为1
,只读查询将等待会话的最后一次写入事务。wait_for_my_writes_timeout [ 0 | 4294967295 ]
: 在回退到读/写目标之前,等待只读目标应用写入事务的最长时间(以秒为单位)。默认为 1。
如果客户端发送 change_user
或 reset_connection
,则会话变量将重置为其初始值。
例如
SQL> ROUTER SET access_mode='read_write'
SQL> query_attribute router.access_mode read_write
引导 MySQL Router 时,将使用以下值创建默认配置
[DEFAULT]
max_idle_server_connections=64
[router:read_write_split]
bind_port=6450
destinations=metadata-cache://mycluster/?role=PRIMARY_AND_SECONDARY
routing_strategy=round-robin
access_mode=auto
protocol=classic
connection_sharing=1
要禁用此配置,必须使用 --disable-rw-split
进行引导。