MySQL Router 9.0  /  一般資訊  /  MySQL InnoDB叢集的路由

1.1 MySQL InnoDB叢集的路由

MySQL Router 是 InnoDB 叢集的一部分,是一種輕量級中介軟體,可在您的應用程式和後端 MySQL 伺服器之間提供透明路由。它適用於各種使用案例,例如透過將資料庫流量路由至適當的後端 MySQL 伺服器來提供高可用性和可擴展性。可插拔的架構也讓開發人員能夠擴充 MySQL Router 以用於自訂的使用案例。

如需有關 Router 如何成為 InnoDB 叢集一部分的詳細資訊,請參閱 MySQL AdminAPI

簡介

為了讓用戶端應用程式能夠處理容錯移轉,它們需要知道 InnoDB 叢集的拓樸,並知道哪個 MySQL 執行個體是 PRIMARY。雖然應用程式可以實作該邏輯,但 MySQL Router 可以為您提供並處理此功能。

MySQL 使用群組複寫來跨多個伺服器複寫資料庫,同時在發生伺服器故障時執行自動容錯移轉。當與 MySQL InnoDB 叢集一起使用時,MySQL Router 會充當代理伺服器,以隱藏您網路上多個 MySQL 執行個體,並將資料請求對應至其中一個叢集執行個體。只要有足夠的線上複本且元件之間的通訊完好無缺,應用程式就能夠連線至其中一個複本。MySQL Router 也讓此功能成為可能,方法是讓應用程式連線至 MySQL Router,而不是直接連線至 MySQL。

使用 MySQL InnoDB 叢集部署 Router

建議的 MySQL Router 部署模型是與 InnoDB 叢集一起使用,Router 與應用程式位於相同的主機上。

在設定叢集之後,使用 InnoDB 叢集部署 MySQL Router 的步驟如下:

  1. 安裝 MySQL Router。

  2. 啟動 InnoDB 叢集,並進行測試。

    啟動會自動使用 --bootstrap 和其他命令列選項,為現有的 InnoDB 叢集設定 MySQL Router。在啟動期間,Router 會連線至叢集、擷取其元數據,並設定自身以供使用。啟動是選用的。

    如需其他資訊,請參閱第 3 章,部署 MySQL Router

  3. 設定 MySQL Router 以進行自動啟動。

    設定您的系統,以便在主機重新啟動時自動啟動 MySQL Router,此流程與 MySQL 伺服器設定為自動啟動的方式類似。如需其他詳細資訊,請參閱第 5.1 節,「啟動 MySQL Router」

例如,在建立 MySQL InnoDB 叢集之後,您可以使用下列方式設定 MySQL Router

$> mysqlrouter --bootstrap localhost:3310 --directory /opt/myrouter --user snoopy

此範例會將 MySQL Router 啟動至現有的 InnoDB 叢集,其中

  • localhost:3310 是 InnoDB 叢集的成員,而 PRIMARY 或啟動會重新導向至叢集中的 PRIMARY。

  • 由於使用了選用的 --directory 啟動選項,因此本範例會建立一個獨立安裝,所有產生的目錄和檔案都位於 /opt/myrouter/。這些檔案包括 start.shstop.shlog/ 和名為 mysqlrouter.conf 的完整 MySQL Router 組態檔。

  • 只有名為 snoopy 的主機系統使用者才能存取 /opt/myrouter/*

如需修改啟動組態流程的方式,請參閱 --bootstrap 和相關選項。例如,傳入 --conf-use-sockets 可啟用 Unix 網域通訊端連線,因為預設只會啟用 TCP/IP 連線。