6.10.3 部署 MySQL Router

建議的 MySQL Router 部署方式與應用程式位於相同的主機上。使用沙箱部署時,所有項目都在單一主機上執行。因此,您將 MySQL Router 部署到相同的主機。使用生產部署時,建議將一個 MySQL Router 執行個體部署到每個用於託管其中一個用戶端應用程式的機器。也可以將 MySQL Router 部署到一個通用機器,讓您的應用程式執行個體透過該機器連線。如需更多資訊,請參閱安裝 MySQL Router

若要根據 InnoDB 叢集或 InnoDB ReplicaSet 啟動 MySQL Router,您需要連線至線上執行個體的 URI 樣式連線字串。執行 mysqlrouter 命令,並提供 --bootstrap=instance 選項,其中 instance 是連線至線上執行個體的 URI 樣式連線字串。MySQL Router 會連線至執行個體,並使用包含的中繼資料快取外掛程式來擷取中繼資料,其中包含伺服器執行個體位址及其角色的清單。例如

$> mysqlrouter --bootstrap icadmin@ic-1:3306 --account=mysqlrouter

系統會提示您輸入 MySQL Router 使用的執行個體密碼和加密金鑰。此金鑰用於加密 MySQL Router 用於連線至叢集的執行個體密碼。也會顯示您可以用於用戶端連線的連接埠。如需其他與啟動相關的選項,請參閱啟動選項

提示

此時 MySQL Router 尚未啟動,因此不會路由連線。啟動是獨立的程序。

MySQL Router 啟動程序會建立 mysqlrouter.conf 檔案,其中包含根據從傳遞至 --bootstrap 選項的位址擷取的中繼資料所做的設定,在上述範例中為 icadmin@ic-1:3306。根據擷取的中繼資料,MySQL Router 會自動設定 mysqlrouter.conf 檔案,包括 metadata_cache 區段。

--bootstrap 選項會自動設定 MySQL Router,以追蹤及儲存由 dynamic_state 設定的路徑上的現用 MySQL 中繼資料伺服器位址。這可確保在重新啟動 MySQL Router 時,它知道目前的 MySQL 中繼資料伺服器位址。如需更多資訊,請參閱 dynamic_state 文件。

產生的 MySQL Router 設定會建立您用來連線至叢集的 TCP 連接埠。根據預設,會建立使用傳統 MySQL 通訊協定和 X 通訊協定與叢集通訊的連接埠。若要使用 X 通訊協定,伺服器執行個體必須已安裝並設定 X 外掛程式,這是 MySQL 8.0 和更新版本的預設設定。預設可用的 TCP 連接埠為

  • 6446 - 適用於傳統 MySQL 通訊協定讀寫工作階段,MySQL Router 會將傳入的連線重新導向至主要伺服器執行個體。

  • 6447 - 適用於傳統 MySQL 通訊協定唯讀工作階段,MySQL Router 會將傳入的連線重新導向至其中一個次要伺服器執行個體。

  • 64460 - 適用於 X 通訊協定讀寫工作階段,MySQL Router 會將傳入的連線重新導向至主要伺服器執行個體。

  • 64470 - 適用於 X 通訊協定唯讀工作階段,MySQL Router 會將傳入的連線重新導向至其中一個次要伺服器執行個體。

根據您的 MySQL Router 設定,連接埠號碼可能與上述不同。例如,如果您使用 --conf-base-port 選項,或 group_replication_single_primary_mode 變數。當您啟動 MySQL Router 時,會列出確切的連接埠。

傳入連線的重新導向方式取決於使用的基礎拓撲。例如,使用單一主要叢集時,根據預設,MySQL Router 會發佈 X 通訊協定和傳統 MySQL 通訊協定連接埠,用戶端會連線至該連接埠以進行讀寫工作階段,並將其重新導向至叢集的單一主要伺服器。使用多主要叢集時,讀寫工作階段會以循環配置資源的方式重新導向至其中一個主要執行個體。例如,第一個連線至連接埠 6446 的連線會重新導向至 ic-1 執行個體。第二個連線至連接埠 6446 的連線會重新導向至 ic-2 執行個體,依此類推。

對於傳入的唯讀連線,MySQL Router 也會以循環配置資源的方式將連線重新導向至其中一個次要執行個體。若要修改此行為,請參閱 routing_strategy 選項。

啟動並設定後,請啟動 MySQL Router。如果您使用 --bootstrap 選項進行全系統安裝,請發出

$> mysqlrouter &

如果您使用 --directory 選項將 MySQL Router 安裝到目錄,請使用您安裝到的目錄中找到的 start.sh 腳本。

或者,設定服務以便在系統啟動時自動啟動 MySQL Router,請參閱啟動 MySQL Router。您現在可以將 MySQL 用戶端 (例如 MySQL Shell) 連線至上述其中一個傳入的 MySQL Router 連接埠,並查看用戶端如何以透明方式連線至其中一個伺服器執行個體。

$> mysqlsh --uri root@localhost:6442

若要驗證您連線至哪個執行個體,請針對 port 狀態變數發出 SQL 查詢。例如

mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> select @@port;
+--------+
| @@port |
+--------+
|   3310 |
+--------+

或者,例如,使用

mysql-js> \sql
Switching to SQL mode... Commands end with ;
mysql-sql> SHOW VARIABLES WHERE Variable_name = 'port';
+--------+
| @@port |
+--------+
|   3310 |
+--------+