MySQL NDB Cluster 設置更喜歡本地主機上的數據節點而不是遠端
我目前的
MySQL NDB Cluster
配置:
- 伺服器 1 - 管理節點
- 伺服器 2 - 大型機器同時執行
ndbd
和mysqld
- 伺服器 3 - 大型機器同時執行
ndbd
和mysqld
NoOfReplicas = 1
所以伺服器 2 具有伺服器 3 數據的精確副本
在設置評估期間,我發現伺服器 2 上的 mysqld 正在向伺服器 3 上執行的 ndbd 發送大約 50% 的查詢。
對於更多數量的節點,這可以提供負載平衡,但是對於我的特定配置(兩個節點具有相同的數據集),我希望通過
mysqld
在每台伺服器上告訴 PREFER 連接到ndbd
在 localhost 上執行的程序來獲得最大性能,並且僅ndbd
當本地不可用時才連接遠端主機(即重新啟動)我已經閱讀了一些關於伺服器訪問成本表的內容,該表應該包含查詢優化器關於節點之間延遲的資訊,但我現在找不到這篇博文。
有什麼幫助嗎?
我建議您升級到 MySQL NDB Cluster 7.5。然後您可以利用新的相關功能: https ://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-system-variables.html#sysvar_ndb_read_backup
使用像您這樣的設置中使用的 read_backup 功能——只有一個節點組(分片/分區)——所有讀取都可以在給定的數據節點本地完成,並且不需要跨數據節點工作。
此功能的另一個相關新方面是,當使用它時,API 節點(mysqld 程序)將自動選擇/使用本地主機上可用的數據節點作為事務協調器。
所以這應該給你正是你在這裡尋找的東西!我希望“讀取備份”功能在許多 MySQL NDB Cluster 使用者中非常受歡迎,尤其是那些與您的設置相似的使用者。:)
有關一些附加資訊:
次要細節,我假設您的意思是您的 NoOfReplicas=2,在這種情況下,伺服器 2 在伺服器 3 中具有數據的精確副本。除此之外,請遵循馬特的建議。