Mysql-Cluster

MySQL NDB Cluster 設置更喜歡本地主機上的數據節點而不是遠端

  • March 22, 2022

我目前的MySQL NDB Cluster配置:

  • 伺服器 1 - 管理節點
  • 伺服器 2 - 大型機器同時執行ndbdmysqld
  • 伺服器 3 - 大型機器同時執行ndbdmysqld
  • 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 中具有數據的精確副本。除此之外,請遵循馬特的建議。

引用自:https://dba.stackexchange.com/questions/154711