多個 SQL 節點。 以下是關於將多個 MySQL 伺服器用作 NDB Cluster SQL 節點的問題,這些問題特定於 NDBCLUSTER
儲存引擎
未分散儲存的程式。 使用
NDB
儲存引擎的表格支援儲存程序、儲存函數、觸發器和排程事件,但這些 不會 在作為叢集 SQL 節點的 MySQL 伺服器之間自動傳播,而且必須在每個 SQL 節點上單獨重新建立。請參閱 NDB Cluster 中的儲存常式和觸發器。沒有分散式表格鎖定。
LOCK TABLES
陳述式或GET_LOCK()
呼叫僅適用於發出鎖定的 SQL 節點;叢集中的任何其他 SQL 節點都 「看不到」 此鎖定。對於任何鎖定表格作為其運算一部分的陳述式發出的鎖定,情況都是如此。(範例請參閱下一項。)在
NDBCLUSTER
中實作表格鎖定可以在 API 應用程式中完成,並確保所有應用程式都先將LockMode
設定為LM_Read
或LM_Exclusive
。如需如何執行此操作的詳細資訊,請參閱 NDB Cluster API 指南中關於NdbOperation::getLockHandle()
的說明。ALTER TABLE 操作。 當執行多個 MySQL 伺服器 (SQL 節點) 時,
ALTER TABLE
並非完全鎖定。(如前一項所述,NDB Cluster 不支援分散式表格鎖定。)
如果任何管理伺服器在同一主機上執行,您必須在連接字串中給節點明確的 ID,因為節點 ID 的自動分配無法在同一主機上的多個管理伺服器之間運作。如果每個管理伺服器都位於不同的主機上,則不需要此設定。
當管理伺服器啟動時,它會先檢查同一 NDB Cluster 中是否有任何其他管理伺服器,並且在成功連線到其他管理伺服器後,會使用其組態資料。這表示,除非管理伺服器是唯一執行的伺服器,否則會忽略管理伺服器的
--reload
和--initial
啟動選項。這也表示,當執行具有多個管理節點的 NDB Cluster 的滾動重新啟動時,如果 (且僅如果) 該管理伺服器是此 NDB Cluster 中唯一執行的管理伺服器,則管理伺服器會讀取其自己的組態檔。如需詳細資訊,請參閱 第 25.6.5 節,〈執行 NDB Cluster 的滾動重新啟動〉。
多個網路位址。 不支援每個資料節點有多個網路位址。使用這些位址可能會導致問題:在資料節點失敗時,SQL 節點會等待確認資料節點關閉,但永遠不會收到確認,因為到該資料節點的另一條路徑仍然開啟。這實際上會使叢集無法運作。
可以使用單一資料節點的多個網路硬體介面 (例如乙太網路卡),但這些必須繫結到相同的位址。這也表示,無法在 config.ini
檔案中的每個連線使用一個以上的 [tcp]
區段。如需詳細資訊,請參閱 第 25.4.3.10 節,〈NDB Cluster TCP/IP 連線〉。