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

1.2 叢集元數據與狀態

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

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

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

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

注意

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

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