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
組態參數所定義。請參閱 目的地狀態選項。