MySQL Router 8.4  /  ...  /  MySQL Router 讀取副本支援

1.2.1 MySQL Router 讀取副本支援

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,或設定為 allread_replicassecondaries 以外的值,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 組態參數所定義。請參閱目的地狀態選項