MySQL Router 讀取在元數據欄位 v2_router_options.router_options.read_only_targets
中定義的值,以擷取唯讀流量的路由資訊。
v2_router_options.router_options.read_only_targets
由 AdminAPI 方法
填入,該方法使用 cluster
.setRoutingOption()read_only_targets
選項將路由策略設定為下列其中一個值
all
:所有讀取副本和次要叢集成員都用於唯讀流量。read_replicas
:只有讀取副本用於唯讀流量。secondaries
:只有次要叢集成員用於唯讀流量。
如果未出現 read_only_targets
,或設定為 all
、read_replicas
或 secondaries
以外的值,MySQL Router 會預設為 secondaries
並記錄警告訊息。
MySQL Router 不使用讀取副本作為叢集元數據的來源。此外,無法在 MySQL Router 啟動命令中使用讀取副本。任何嘗試使用讀取副本啟動的操作都會傳回錯誤。
在下列情況下,MySQL Router 不會將連線路由至讀取副本
如果叢集中沒有仲裁。
如果所有叢集成員都處於離線狀態。
如果檢查其群組複寫狀態時無法連線到任何叢集成員。
MySQL Router 路由策略受組態的影響方式如下
如果叢集狀態為 INVALID 且
invalidated_cluster_policy
設定為drop_all
,則不會使用讀取副本進行新的唯讀連線,並且會捨棄所有現有與讀取副本的連線。如果叢集狀態為 INVALID 且
invalidated_cluster_policy
設定為allow_ro
,則會使用讀取副本進行新的唯讀連線,並且不會影響現有與讀取副本的連線。
MySQL Router 會針對讀取副本使用標準的隔離機制,如 desination_status
組態參數所定義。請參閱目的地狀態選項。