MySQL Router 是 InnoDB Cluster 的一部分,是輕量級中介軟體,可在您的應用程式和後端 MySQL 伺服器之間提供透明路由。它用於各種使用案例,例如透過將資料庫流量路由到適當的後端 MySQL 伺服器來提供高可用性和可擴展性。可插拔架構也讓開發人員能夠針對自訂使用案例擴充 MySQL Router。
如需有關 Router 如何成為 InnoDB Cluster 一部分的更多詳細資訊,請參閱MySQL AdminAPI。
為了讓用戶端應用程式能夠處理故障轉移,它們需要知道 InnoDB 叢集的拓撲結構,並知道哪個 MySQL 執行個體是 PRIMARY。雖然應用程式可以實作該邏輯,但 MySQL Router 可以為您提供並處理此功能。
MySQL 使用群組複寫在多個伺服器之間複寫資料庫,同時在伺服器發生故障時執行自動故障轉移。當與 MySQL InnoDB Cluster 搭配使用時,MySQL Router 會充當 Proxy,以隱藏您網路上的多個 MySQL 執行個體,並將資料請求對應到其中一個叢集執行個體。只要有足夠的線上複本,且元件之間的通訊完好無損,應用程式就能夠連線到其中一個。MySQL Router 也讓應用程式連線到 MySQL Router 而非直接連線到 MySQL,進而實現此目標。
針對 MySQL Router 的建議部署模型是使用 InnoDB Cluster,Router 與應用程式位於相同的主機上。
在組態叢集後,使用 InnoDB Cluster 部署 MySQL Router 的步驟為
安裝 MySQL Router。
-
啟動 InnoDB Cluster 並測試。
啟動會使用
--bootstrap
和其他命令列選項,自動組態現有 InnoDB Cluster 的 MySQL Router。在啟動期間,Router 會連線到叢集、提取其元數據,並將其自身組態為供使用。啟動是選用的。如需更多資訊,請參閱第 3 章《部署 MySQL Router》。
-
設定 MySQL Router 以進行自動啟動。
組態您的系統,以便在主機重新啟動時自動啟動 MySQL Router,此程序與組態 MySQL 伺服器自動啟動的方式類似。如需更多詳細資訊,請參閱第 5.1 節〈啟動 MySQL Router〉。
例如,在建立 MySQL InnoDB Cluster 後,您可能會使用下列方式組態 MySQL Router
$> mysqlrouter --bootstrap localhost:3310 --directory /opt/myrouter --user snoopy
此範例會將 MySQL Router 啟動至現有的 InnoDB Cluster,其中
localhost:3310
是 InnoDB 叢集的成員,且 PRIMARY 或啟動會重新導向至叢集中的 PRIMARY。由於使用了選用的
--directory
啟動選項,因此此範例會在/opt/myrouter/
建立包含所有產生的目錄和檔案的獨立安裝。這些檔案包括start.sh
、stop.sh
、log/
,以及名為mysqlrouter.conf
的完整功能 MySQL Router 組態檔案。只有名為
snoopy
的主機系統使用者才有權限存取/opt/myrouter/*
。
請參閱 --bootstrap
和相關選項,以瞭解如何修改啟動組態程序。例如,傳入 --conf-use-sockets
可啟用 Unix 網域 Socket 連線,因為預設只會啟用 TCP/IP 連線。