多個 SQL 節點。 以下是與使用多個 MySQL 伺服器作為 NDB Cluster SQL 節點相關的問題,且特定於 NDBCLUSTER
儲存引擎
已儲存程式未分配。 使用
NDB
儲存引擎的資料表支援已儲存程序、已儲存函數、觸發程序和已排程事件,但這些項目 不會 在做為 Cluster 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 連線」。