MySQL Router 8.4  /  一般資訊  /  叢集元數據與狀態

1.2 叢集元數據與狀態

MySQL Router 的運作方式是在應用程式和 MySQL 伺服器之間擔任中介。應用程式會像連線到一般的 MySQL 伺服器一樣正常連線到 Router。每當應用程式連線到 Router 時,Router 會從它所知道的候選伺服器池中選擇一個合適的 MySQL 伺服器,然後連線到該伺服器。從那一刻起,Router 會轉發應用程式和 MySQL 之間的所有網路流量,包括從 MySQL 回傳的回應。

MySQL Router 會保存一份線上 MySQL 伺服器的快取清單,或已組態的 InnoDB 叢集的拓撲和狀態。最初,此清單會在 Router 啟動時從 Router 的組態檔載入。此清單是當 Router 使用 --bootstrap 選項啟動時,以 InnoDB 叢集伺服器產生的。

為了保持快取更新,元數據快取元件會保持與包含元數據的其中一個 InnoDB 叢集伺服器的開啟連線。它會透過查詢元數據資料庫和來自 MySQL 效能架構的即時狀態資訊來完成此操作。每當修改 InnoDB 叢集時(例如使用 MySQL Shell 新增或移除 MySQL 伺服器),以及每當偵測到叢集狀態變更時,MySQL 伺服器的 Group Replication 外掛程式會即時更新 performance_schema 資料表,叢集元數據就會發生變更。

當 Router 偵測到連線的 MySQL 伺服器關閉時(例如,因為元數據快取已失去連線且無法再次連線),它會嘗試連線到不同的 MySQL 伺服器,以從新的 MySQL 伺服器擷取元數據和 InnoDB 叢集狀態。

注意

使用 MySQL Shell 捨棄叢集元數據(例如 dba.dropMetadataSchema())會導致 Router 捨棄所有目前的連線並禁止新的連線。這會導致完全中斷。

應用程式與關閉的 MySQL 伺服器的連線會自動關閉。然後,它們必須重新連線到 Router,Router 會將它們重新導向至線上 MySQL 伺服器。