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