若要啟用讀寫分離,必須啟用下列 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_write 伺服器。read_only
:所有工作階段流量都傳送到 read_only 伺服器。auto
:伺服器會根據交易類型選取,讀取會針對 read_only 伺服器,寫入會針對 read_write 伺服器。
wait_for_my_writes [ 0 | 1 ]
:如果啟用,則為1
,唯讀查詢會等待工作階段上次寫入的交易。wait_for_my_writes_timeout [ 0 | 4294967295 ]
:唯讀目的地套用寫入交易的最大等待時間 (以秒為單位),之後才會回復為 read_write 目的地。預設值為 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
啟動。