要啟用讀寫分離,必須啟用以下 router 選項
-
access_mode:必須設定為auto。注意可以為每個工作階段定義
read_write和read_only的access_mode值。請參閱 每個工作階段的配置。 connection_sharing:必須設定為1。protocol:必須設定為classic。destinations:必須設定為角色設定為PRIMARY_AND_SECONDARY的metadata-cacheURL。
可以使用以下其中一種方式,為每個工作階段定義讀寫分離配置
ROUTER SEToptionName='value'query_attributes router.optionNamevalue
以下是可能的 和值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 進行引導啟動。