MySQL Router 8.4  /  MySQL Router 常見問題

附錄 A MySQL Router 常見問題

A.1. 我應該在哪裡安裝 MySQL Router?
A.2. 我可以執行多個路由器應用程式執行個體嗎?
A.3. 如何讓路由器應用程式達到高可用性?
A.4. 路由器會檢查封包嗎?
A.5. 路由器會影響效能嗎?
A.6. 請說明不同的 MySQL Router 版本,特別是為什麼 Router 從 2.1.4 跳到 8.0.3。
A.7. 我可以將路由器繫結至多個 IP 位址嗎?
A.8. 不同的排程模式和策略之間有什麼差異?
A.9. 每個 MySQL Router 執行個體支援多少並行連線?
A.10. 如何設定 MySQL Router 在使用 AppArmor 的系統上使用非預設目錄?

A.1.

我應該在哪裡安裝 MySQL Router?

為了獲得最佳效能,MySQL Router 通常會安裝在使用它的應用程式所在的同一主機上。這樣做可以減少網路延遲,允許使用本機 Unix 網域通訊端連線到應用程式而不是 TCP/IP,而且通常應用程式伺服器最容易擴展。但是,這不是必要條件,因為 Router 可以安裝在任何主機上,甚至是它自己的主機上。

注意

Unix 網域通訊端可以使用連線到 MySQL Router 的應用程式,但不適用於 MySQL Router 連線到 MySQL Server。

A.2.

我可以執行多個路由器應用程式執行個體嗎?

可以,另請參閱 --directory 啟動選項。

A.3.

如何讓路由器應用程式達到高可用性?

將 MySQL Router 用作 InnoDB Cluster 的一部分。如需其他詳細資訊,請參閱 MySQL AdminAPI

A.4.

路由器會檢查封包嗎?

不會。

A.5.

路由器會影響效能嗎?

在通訊串流中引入元件會產生一定的額外負荷;這受到工作負載的嚴重影響。幸運的是,目前版本的效能測試顯示,對於簡單的重新導向連線路由,其速度與直接連線的速度大致相同,約為 1%。

A.6.

請說明不同的 MySQL Router 版本,特別是為什麼 Router 從 2.1.4 跳到 8.0.3。

MySQL Router 2.0 是初始版本,適用於 MySQL Fabric 使用者。它已遭到棄用,不再支援。

MySQL Router 2.1 的推出是為了支援 MySQL InnoDB 叢集,並且還新增了啟動等新功能。

MySQL Router 8.0 在 MySQL Router 2.1 的基礎上進行了擴展,但其版本號碼與 MySQL Server 一致。換句話說,Router 2.1.5 作為 Router 8.0.3 (以及 MySQL Server 8.0.3) 發佈,而 2.1.x 分支已由 8.0.x 取代。這兩個分支完全相容。

A.7.

我可以將路由器繫結至多個 IP 位址嗎?

否,組態檔中的 bind_address 選項只接受一個位址。但是,可以使用 bind_addres = 0.0.0.0 來繫結至本機主機上的所有連接埠。

A.8.

不同的排程模式和策略之間有什麼差異?

Router 8.0 引入了 routing_strategy 選項。它提供 first-availablenext-availableround-robinround-robin-with-fallback 策略。如需其他詳細資訊,請參閱 routing_strategy 文件。

A.9.

每個 MySQL Router 執行個體支援多少並行連線?

截至 MySQL Router 8.0.22,超過 50,000 個,具體取決於系統的輪詢 (poll 或 linux_epoll) 限制,也取決於可用的 CPU 核心/執行緒數量。

較早版本的 MySQL Router 的限制接近 5000 個,具體取決於作業系統的 poll() 限制。

A.10.

如何設定 MySQL Router 在使用 AppArmor 的系統上使用非預設目錄?

如果您在使用 AppArmor 的系統 (例如 Ubuntu) 上使用 --directory 選項,您可能會遇到與 MySQL Router 存取非預設目錄相關的權限錯誤。在這種情況下,將您傳遞給 --directory 的路徑新增到建議的 AppArmor 檔案中,並重新啟動 AppArmor。