網絡故障(network failure)是指由于硬件的問題、軟件的漏洞、病毒的侵入等引起網絡無法提供正常服務或降低服務質量的狀態。 本節介紹如何將MySQL路由器與InnoDB群集一起使用以實現高可用性。無論您是否部署了沙箱集群或生產集群,MySQL路由器都可以使用--bootstrap選項根據InnoDB集群的元數據進行自我配置。這將自動配置MySQL路由器,以將連接路由到群集的服務器實例?蛻舳藨贸绦蜻B接到MySQL路由器提供的端口,而無需了解InnoDB集群拓撲。萬一發生意內安裝,請發送: shell> mysqlrouter& 如果使用--directory選項將MySQL Router安裝到目錄中,請使用start.sh安裝目錄中的腳本。或者,將服務設置為在系統啟動時自動啟動MySQL Router,請參閱啟動MySQL Router。您現在可以如上所述將MySQL客戶端(例如MySQL Shell)連接到傳入的MySQL路由器端口之一,并查看客戶端如何透明地連接到InnoDB集群實例之一。 shell> mysqlsh --uri root @ localhost:6442 要驗證您實際連接的實例,只需對端口狀態變量執行SQL查詢。 mysql-js> \ sql 切換到SQL模式...命令以;結尾 mysql-sql>選擇@@ port; + -------- + | @@ port | + -------- + | 3310 | + -------- + 測試高可用性 要測試高可用性是否有效,請通過殺死實例來模擬意外停止。群集檢測到實例已離開群集并重新配置自身的事實。群集本身實際如何重新配置??取決于您使用的是單主機群集還是多主機群集,以及實例在群集中扮演的角色。 在單個主模式下: 如果當前主節點離開群集,則將選擇一個輔助實例作為新的主實例,其優先級最低的是server_uuid。 MySQL Router將讀寫連接重定向到新選擇的主。 如果當前輔助節點離開群集,則MySQL Router將停止將只讀連接重定向到該實例。 有關更多信息,請參閱第1節8. 1. 3. 1“單主機模式”。 在多主要模式下: 如果當前的“ R / W”實例離開集群,則MySQL路由器會將讀取和寫入連接重定向到其他主。如果其余實例是群集中的最后一個主實例,則群集已完全消失,您將無法連接到任何MySQL路由器端口。 有關更多信息,請參見第1 8. 1. 3. 2節“多主模式”。 有許多方法可以模擬離開群集的實例。例如,您可以在dba.killSandboxInstance()測試沙箱部署時,強制停止實例上的MySQL服務器,或使用AdminAPI。在此示例中,假設有一個包含三個服務器實例的單一主沙箱群集部署,并且偵聽端口3310的實例是當前主實例。模擬實例意外離開集群: mysql-js> dba.killSandboxInstance(331 0) 集群檢測到更改并自動選擇一個新的主。假設您的會話已連接到默認的經典經典MySQL協議端口6446,則MySQL路由器應檢測到群集拓撲更改并將會話重定向到新選擇的主服務器。要驗證這一點,請使用以下\ sql命令在MySQL Shell中切換到SQL模式,然后選擇實例的端口變量以檢查會話已重定向到哪個實例。請注意,第一個SELECT語句失敗,因為與原始主的連接已丟失。這意味著當前會話已關閉,MySQL Shell將自動為您重新連接,并且當您再次發出命令時,將確認新端口。 mysql-js> \ sql 切換到SQL模式...命令以;結尾 mysql-sql> SELECT @@ port; 錯誤:2013(HY00 0):查詢期間與MySQL服務器的連接丟失 全局會話斷開連接。 嘗試重新連接到'root @ localhost:6446'... 全局會話已成功重新連接。 mysql-sql> SELECT @@ port; + -------- + | @@ port | + -------- + | 3330 | + -------- + 已設置1行(0. 00秒) 在此示例中,端口3330的實例已被選擇為新的主實例。這表明InnoDB集群為我們提供了自動故障轉移,MySQL Router已自動將我們重新連接到新的主實例,并且我們具有高可用性。 MySQL路由器和元數據服務器 當MySQL Router為集群啟動時,它將在其配置文件中記錄服務器實例的地址。如果在啟動MySQL路由器后將任何其他實例添加到群集中,它們將不會被自動檢測到,因此不會用于連接路由。 為確保正確路由新添加的實例,必須為群集啟動MySQL路由器以讀取更新的元數據。這意味著您必須重新啟動MySQL Router并包括--bootstrap選項。 使用群集路由器 您可以針對一個集群或副本集啟動多個MySQL Router實例。從8. 0. 19版本開始,要顯示所有已注冊的MySQL路由器實例的列表,請發出: Cluster.listRouters() 結果提供有關每個已注冊的MySQL路由器實例的信息,例如元數據中的名稱,主機名,端口等。例如,發出: mysql-js> Cluster.listRouters() { “ clusterName”:“示例”, “路由器”:{ “ ic-1:3306”:{ “主機名”:“ ic-1:3306”,
當今,越來越多的業務應用運行于網絡架構之上,保障網絡的持續、高效、安全的運行,成為網絡管理者面臨的巨大挑戰。 |
溫馨提示:喜歡本站的話,請收藏一下本站!