MySQL Router 9.0  /  一般資訊  /  應用程式考量

1.4 應用程式考量

MySQL Router 的使用不需要特定的程式庫或介面。除了管理 MySQL Router 實例之外,請將您的應用程式編寫得像是使用典型的 MySQL 實例一樣。

使用 MySQL Router 時,唯一的差異在於您如何連線到 MySQL 伺服器。使用單一 MySQL 連線在啟動時不測試連線錯誤的應用程式必須更新。這是因為 MySQL Router 會在嘗試連線時重新導向連線,而不會讀取封包或執行分析。如果 MySQL 伺服器發生故障,Router 會將連線錯誤返回給應用程式。

基於這些原因,應該編寫應用程式來測試連線錯誤,如果遇到錯誤,則重試連線。如果您的應用程式中採用了這種技術或類似的技術,那麼使用 MySQL Router 不需要任何額外的努力。

以下內容可以更好地了解您可能想要使用 MySQL Router 的原因,並從應用程式的角度探討如何使用它。

情境

MySQL Router 有幾種可能的情境,包括

  • 身為開發人員,我希望我的應用程式連線到服務,以便預設情況下,取得群組複寫叢集目前主要節點的連線。

  • 身為管理員,我想要設定多個服務,讓 MySQL Router 為每個高可用性複本集在不同的埠上監聽。

  • 身為管理員,我想要能夠在埠 3306 上執行連線路由服務,使其對使用者或應用程式更加透明。

  • 身為管理員,我想要為每個連線路由服務設定路由策略,以便指定返回主要節點還是次要節點。

使用 MySQL Router 的工作流程

使用 MySQL Router 的工作流程如下

  1. MySQL 用戶端或連接器連線到 MySQL Router,例如連接到埠 6446。

  2. Router 檢查是否有可用的 MySQL 伺服器。

  3. Router 開啟與合適的 MySQL 伺服器的連線。

  4. Router 在應用程式和 MySQL 伺服器之間來回轉發封包

  5. 如果連線的 MySQL 伺服器發生故障,Router 會斷開應用程式的連線。然後,應用程式可以重試連線到 Router,而 Router 會選擇不同的可用 MySQL 伺服器。

使用 MySQL Router 的連線

應用程式連線到 MySQL Router,而 Router 將應用程式連線到可用的 MySQL 伺服器。

此範例示範連線如何透明地連線到其中一個 InnoDB 叢集實例。由於此範例使用沙箱化的 InnoDB 叢集,其中所有實例都在同一主機上執行,因此我們檢查 port 狀態變數以查看連線的是哪個 MySQL 實例。

使用 MySQL 用戶端連線到 MySQL Router,例如

$> mysql -u root -h 127.0.0.1 -P 6446 -p

這些埠號取決於您的設定,但請比較此範例中的埠

mysql> select @@port;
+--------+
| @@port |
+--------+
|   3310 |
+--------+
1 row in set (0.00 sec)

總而言之,用戶端(應用程式)連線到埠 6446,但卻連線到埠 3310 上的 MySQL 實例。

建議

以下是使用 MySQL Router 的建議。

  • 在與應用程式相同的主機上安裝並執行 MySQL Router。有關原因列表,請參閱第 3 章,部署 MySQL Router

  • 使用設定檔中的 bind_port = 127.0.0.1:<port> 將 Router 繫結到 localhost。或者,在 Linux 上,停用 TCP 連線(請參閱 --conf-skip-tcp),並將此限制為僅使用 Unix Socket 連線(請參閱 --conf-use-sockets)。