ndbmtd 是 ndbd 的多執行緒版本,該程序用於處理使用 NDBCLUSTER
儲存引擎的資料表中的所有資料。ndbmtd 適用於具有多個 CPU 核心的主機電腦。除非另有說明,否則 ndbmtd 的功能與 ndbd 相同;因此,在本節中,我們將重點說明 ndbmtd 與 ndbd 的差異之處,您應參考第 25.5.1 節〈ndbd — NDB 叢集資料節點精靈〉,以取得關於執行 NDB 叢集資料節點的其他資訊,這些資訊同時適用於資料節點程序的單執行緒和多執行緒版本。
與 ndbd 一起使用的命令列選項和組態參數也適用於 ndbmtd。如需這些選項和參數的詳細資訊,請參閱第 25.5.1 節〈ndbd — NDB 叢集資料節點精靈〉,以及第 25.4.3.6 節〈定義 NDB 叢集資料節點〉。
ndbmtd 也與 ndbd 相容於檔案系統。換句話說,可以停止執行 ndbd 的資料節點,將二進位檔替換為 ndbmtd,然後重新啟動,而不會遺失任何資料。(不過,執行此操作時,您必須確定在重新啟動節點之前,MaxNoOfExecutionThreads
設定為適當的值,如果您希望 ndbmtd 以多執行緒方式執行。)同樣地,只需停止節點,然後啟動 ndbd 來取代多執行緒二進位檔,即可將 ndbmtd 二進位檔替換為 ndbd。在兩者之間切換時,不需要使用 --initial
來啟動資料節點二進位檔。
使用 ndbmtd 與使用 ndbd 在兩個主要方面有所不同
由於 ndbmtd 預設以單執行緒模式執行 (也就是說,其行為與 ndbd 相同),您必須將其設定為使用多個執行緒。這可以透過在
config.ini
檔案中為MaxNoOfExecutionThreads
組態參數或ThreadConfig
組態參數設定適當的值來完成。使用MaxNoOfExecutionThreads
比較簡單,但ThreadConfig
提供更大的彈性。如需這些組態參數及其使用的詳細資訊,請參閱多執行緒組態參數 (ndbmtd)。ndbmtd 程序中嚴重錯誤產生的追蹤檔方式,與 ndbd 失敗產生的方式略有不同。在接下來的幾段中將更詳細地討論這些差異。
與 ndbd 一樣,ndbmtd 會產生一組記錄檔,這些記錄檔放置在 config.ini
組態檔案中由 DataDir
指定的目錄中。除了追蹤檔之外,這些檔案的產生方式和名稱與 ndbd 產生的檔案相同。
發生嚴重錯誤時,ndbmtd 會產生追蹤檔,描述錯誤發生之前的狀況。這些檔案位於資料節點的 DataDir
中,對於 NDB 叢集開發和支援團隊分析問題非常有用。每個 ndbmtd 執行緒都會產生一個追蹤檔。這些檔案的名稱具有以下模式
ndb_node_id_trace.log.trace_id_tthread_id,
在這個模式中,node_id
代表叢集中資料節點的唯一節點 ID,trace_id
是一個追蹤序號,而 thread_id
則是執行緒 ID。舉例來說,如果一個以節點 ID 3 運行的 NDB Cluster 資料節點的 ndbmtd 程式發生故障,且 MaxNoOfExecutionThreads
等於 4,則會在資料節點的資料目錄中產生四個追蹤檔案。如果這是此節點第一次發生故障,則這些檔案會被命名為 ndb_3_trace.log.1_t1
、ndb_3_trace.log.1_t2
、ndb_3_trace.log.1_t3
和 ndb_3_trace.log.1_t4
。在內部,這些追蹤檔案的格式與 ndbd 追蹤檔案的格式相同。
當資料節點程序過早關閉時產生的 ndbd 退出代碼和訊息,也會被 ndbmtd 使用。請參閱資料節點錯誤訊息以取得這些訊息的列表。