我已經設定了 MySQL InnoDB Cluster 最新版本 (8.0.27),其中包含三個具有單個主節點的節點。我有一個 VB 腳本和連接字串。當前連接字串類似于:
jdbc:mysql://node1,node2,node3;db=test?multi_host=true
假設我的主節點 1 出現故障,R/W 訪問將傳遞到成為主節點的節點 2 或節點 3。在此期間,我的連接字串將無法作業,因為它嘗試連接到第一個節點并失敗。是否有任何其他引數可以在連接字串中傳遞來處理此類問題?連接字串如何知道哪個節點是主節點并連接到它。
謝謝。
uj5u.com熱心網友回復:
InnoDB Cluster 通常以單主模式運行,具有一個主實體(讀寫)和多個從實體(只讀)。
為了讓客戶端應用程式處理故障轉移,他們需要了解 InnoDB 集群拓撲。他們還需要知道哪個實體是 PRIMARY。雖然應用程式可以實作該邏輯,但MySQL Router可以為您提供此功能。
shell> mysqlrouter --bootstrap root@localhost:3310
MySQL Router 連接到 InnoDB 集群,獲取其元資料并配置自身以供使用。生成的配置創建了 2 個 TCP 埠:一個用于讀寫會話(將連接重定向到 PRIMARY),另一個用于只讀會話(將連接重定向到 SECONDARY 實體之一)。
引導和配置完成后,啟動 MySQL Router(或設定一個服務使其在系統啟動時自動啟動):
shell> mysqlrouter &
您現在可以將 MySQL 客戶端(例如 MySQL Shell)連接到傳入的 MySQL 路由器埠之一,并查看客戶端如何透明地連接到 InnoDB 集群實體之一。
shell> mysqlsh --uri root@localhost:6442
但是,當主節點出現故障時,您只能讀取資料而無法寫入。如果您希望寫入作業,請參閱 MySql 的高可用性和多主集群。
有關更多詳細資訊,請參閱此內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343338.html
下一篇:將關聯陣列存盤到資料庫中
