文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  NDB Cluster 核心概念

25.2.1 NDB Cluster 核心概念

NDBCLUSTER (也稱為 NDB) 是一種提供高可用性和資料持久性功能的記憶體內儲存引擎。

NDBCLUSTER 儲存引擎可以配置一系列容錯移轉和負載平衡選項,但最好從叢集層級的儲存引擎開始。NDB Cluster 的 NDB 儲存引擎包含一整套資料,僅依賴於叢集本身內的其他資料。

NDB Cluster 的 叢集 部分是獨立於 MySQL 伺服器配置的。在 NDB Cluster 中,叢集的每個部分都被視為一個節點

注意

在許多情況下,術語 節點 用於表示電腦,但在討論 NDB Cluster 時,它表示一個進程。可以在單一電腦上執行多個節點;對於執行一個或多個叢集節點的電腦,我們使用術語 叢集主機

有三種類型的叢集節點,在最小的 NDB Cluster 配置中,至少有三個節點,每種類型一個

  • 管理節點:此類型節點的角色是管理 NDB Cluster 內的其他節點,執行諸如提供配置資料、啟動和停止節點以及執行備份等功能。由於此節點類型管理其他節點的配置,因此應先啟動此類型的節點,然後再啟動任何其他節點。管理節點使用命令 ndb_mgmd 啟動。

  • 資料節點:此類型的節點儲存叢集資料。資料節點的數量等於片段複本數量乘以片段數量(請參閱 第 25.2.2 節、「NDB Cluster 節點、節點群組、片段複本和分割」)。例如,如果有兩個片段複本,每個複本有兩個片段,則需要四個資料節點。一個片段複本足以儲存資料,但不提供任何冗餘;因此,建議使用兩個(或多個)片段複本以提供冗餘,從而實現高可用性。資料節點使用命令 ndbd(請參閱 第 25.5.1 節、「ndbd — NDB Cluster 資料節點精靈」)或 ndbmtd(請參閱 第 25.5.3 節、「ndbmtd — NDB Cluster 資料節點精靈(多執行緒)」)啟動。

    NDB Cluster 表格通常完全儲存在記憶體中,而不是在磁碟上(這就是我們將 NDB Cluster 稱為記憶體內資料庫的原因)。但是,某些 NDB Cluster 資料可以儲存在磁碟上;如需更多資訊,請參閱 第 25.6.11 節、「NDB Cluster 磁碟資料表格」

  • SQL 節點:這是一個存取叢集資料的節點。在 NDB Cluster 的情況下,SQL 節點是使用 NDBCLUSTER 儲存引擎的傳統 MySQL 伺服器。SQL 節點是使用 --ndbcluster--ndb-connectstring 選項啟動的 mysqld 進程,這些選項將在本章的其他地方說明,可能還會包含其他 MySQL 伺服器選項。

    SQL 節點實際上只是一種特殊類型的 API 節點,它指定任何存取 NDB Cluster 資料的應用程式。API 節點的另一個範例是 ndb_restore 公用程式,用於還原叢集備份。可以使用 NDB API 撰寫此類應用程式。如需有關 NDB API 的基本資訊,請參閱 NDB API 入門

重要

在生產環境中採用三節點設定是不切實際的。此類配置不提供任何冗餘;要從 NDB Cluster 的高可用性功能中獲益,您必須使用多個資料和 SQL 節點。強烈建議使用多個管理節點。

如需簡要介紹 NDB Cluster 中節點、節點群組、片段複本和分割之間的關係,請參閱 第 25.2.2 節、「NDB Cluster 節點、節點群組、片段複本和分割」

叢集的配置包括配置叢集中的每個單獨節點,並設定節點之間的個別通訊連結。NDB Cluster 目前的設計意圖是資料節點在處理器效能、記憶體空間和頻寬方面是同質的。此外,為了提供單一配置點,整個叢集的所有配置資料都位於一個配置檔案中。

管理伺服器管理叢集設定檔和叢集日誌。叢集中的每個節點都從管理伺服器擷取配置資料,因此需要一種方法來確定管理伺服器所在的位置。當資料節點中發生有趣的事件時,節點會將有關這些事件的資訊傳輸到管理伺服器,然後管理伺服器將資訊寫入叢集日誌。

此外,可以有任意數量的叢集用戶端進程或應用程式。這些包括標準 MySQL 用戶端、NDB 特定 API 程式和管理用戶端。這些在接下來的幾個段落中進行說明。

標準 MySQL 用戶端。 NDB Cluster 可以與現有的 PHP、Perl、C、C++、Java、Python 等程式碼寫成的 MySQL 應用程式一起使用。此類用戶端應用程式會將 SQL 陳述式傳送到充當 NDB Cluster SQL 節點的 MySQL 伺服器,並從中接收回應,就像它們與獨立的 MySQL 伺服器互動一樣。

可以使用 NDB Cluster 作為資料來源的 MySQL 用戶端,可以修改為利用與多個 MySQL 伺服器連線來實現負載平衡和容錯移轉的功能。例如,使用 Connector/J 5.0.6 及更高版本的 Java 用戶端可以使用 jdbc:mysql:loadbalance:// URL(在 Connector/J 5.1.7 中改進)來透明地實現負載平衡;如需有關將 Connector/J 與 NDB Cluster 搭配使用的更多資訊,請參閱 將 Connector/J 與 NDB Cluster 搭配使用

NDB 用戶端程式。 可以撰寫用戶端程式,使用高階 C++ API NDB API,直接從 NDBCLUSTER 儲存引擎存取 NDB Cluster 資料,繞過可能已連線到叢集的任何 MySQL 伺服器。對於不需要資料 SQL 介面的特殊用途,此類應用程式可能很有用。如需更多資訊,請參閱 NDB API

也可以使用 NDB Cluster Connector for Java 為 NDB Cluster 撰寫 NDB 特定 Java 應用程式。此 NDB Cluster Connector 包括 ClusterJ,這是一個高階資料庫 API,類似於物件關聯對應持久性框架,例如 Hibernate 和 JPA,它們直接連線到 NDBCLUSTER,因此不需要存取 MySQL 伺服器。如需更多資訊,請參閱 Java 和 NDB ClusterClusterJ API 和資料物件模型

NDB Cluster 也支援使用 Node.js 撰寫的 JavaScript 應用程式。MySQL Connector for JavaScript 包括用於直接存取 NDB 儲存引擎以及 MySQL 伺服器的配接器。使用此連接器的應用程式通常是事件驅動的,並使用在許多方面與 ClusterJ 所採用的網域物件模型類似的網域物件模型。如需更多資訊,請參閱 適用於 JavaScript 的 MySQL NoSQL Connector

管理用戶端。這些用戶端連線至管理伺服器,並提供命令以優雅地啟動和停止節點、啟動和停止訊息追蹤(僅限除錯版本)、顯示節點版本和狀態、啟動和停止備份等等。這種類型程式的一個範例是 NDB Cluster 隨附的 ndb_mgm 管理用戶端(請參閱第 25.5.5 節,「ndb_mgm — NDB Cluster 管理用戶端」)。可以使用 MGM API 來編寫這類應用程式,此 API 是一種 C 語言 API,可直接與一個或多個 NDB Cluster 管理伺服器通訊。如需更多資訊,請參閱MGM API

Oracle 也提供 MySQL Cluster Manager,它提供進階的命令列介面,簡化了許多複雜的 NDB Cluster 管理任務,例如重新啟動具有大量節點的 NDB Cluster。MySQL Cluster Manager 用戶端也支援用於取得和設定大多數節點組態參數以及與 NDB Cluster 相關的 mysqld 伺服器選項和變數的命令。如需更多資訊,請參閱MySQL Cluster Manager 8.4.1 使用手冊

事件記錄。NDB Cluster 會依類別(啟動、關閉、錯誤、檢查點等等)、優先順序和嚴重性記錄事件。所有可報告事件的完整清單可以在第 25.6.3 節,「在 NDB Cluster 中產生的事件報告」中找到。事件記錄有下列兩種:

  • 叢集記錄:保留整個叢集所有所需可報告事件的記錄。

  • 節點記錄:也為每個個別節點保留的個別記錄。

注意

在正常情況下,只需要保留和檢查叢集記錄就足夠了。節點記錄僅需要在應用程式開發和除錯時才需要查閱。

檢查點。一般來說,當資料儲存到磁碟時,表示已達到檢查點。更具體來說,對於 NDB Cluster,檢查點是指所有已提交交易都儲存在磁碟上的時間點。關於 NDB 儲存引擎,有兩種檢查點類型一起運作,以確保維護叢集資料的一致性視圖。這些顯示在以下清單中:

  • 本機檢查點 (LCP):這是特定於單一節點的檢查點;但是,LCP 大致同時發生在叢集中的所有節點上。LCP 通常每隔幾分鐘發生一次;確切間隔會有所不同,取決於節點儲存的資料量、叢集活動的程度以及其他因素。

    NDB 8.4 支援部分 LCP,在某些情況下可以顯著提升效能。請參閱啟用部分 LCP 並控制其使用的儲存量的 EnablePartialLcpRecoveryWork 組態參數的說明。

  • 全域檢查點 (GCP):GCP 每隔幾秒發生一次,當所有節點的交易都同步時,重做記錄會刷新到磁碟。

如需更多關於本機檢查點和全域檢查點所建立的檔案和目錄的資訊,請參閱NDB Cluster 資料節點檔案系統目錄

傳輸器。我們使用傳輸器一詞來表示資料節點之間使用的資料傳輸機制。MySQL NDB Cluster 8.4 支援以下列出的三種:

由於它無處不在,因此大多數使用者都使用透過乙太網路的 TCP/IP 來執行 NDB Cluster。

無論使用哪種傳輸器,NDB 都會嘗試確保資料節點程序之間的通訊使用盡可能大的區塊執行,因為這有助於所有類型的資料傳輸。