ndbd 二進位檔案提供處理使用 NDBCLUSTER
儲存引擎之表格中所有資料的單執行緒版本程序。此資料節點程序使資料節點能夠完成分散式交易處理、節點復原、磁碟檢查點、線上備份和相關工作。啟動時,ndbd 會記錄類似於此處所示的警告
2024-05-28 13:32:16 [ndbd] WARNING -- Running ndbd with a single thread of
signal execution. For multi-threaded signal execution run the ndbmtd binary.
ndbmtd 是此二進位檔案的多執行緒版本。
在 NDB Cluster 中,一組資料節點程序會協同運作以處理資料。這些程序可以在同一部電腦 (主機) 或不同的電腦上執行。資料節點和叢集主機之間的對應是完全可設定的。
以下表格顯示可用於 ndbd 的選項。其他說明如下表所示。
-
命令列格式 --bind-address=名稱
類型 字串 預設值 導致 ndbd 繫結至特定的網路介面 (主機名稱或 IP 位址)。此選項沒有預設值。
-
命令列格式 --character-sets-dir=路徑
包含字元集的目錄。
-
命令列格式 --connect-delay=#
已棄用 是 類型 數值 預設值 5
最小值 0
最大值 3600
決定在啟動時嘗試聯繫管理伺服器之間的等待時間 (嘗試次數由
--connect-retries
選項控制)。預設值為 5 秒。此選項已棄用,並可能會在 NDB Cluster 的未來版本中移除。請改用
--connect-retry-delay
。 -
命令列格式 --connect-retries=#
類型 數值 預設值 12
最小值 -1
最大值 65535
設定放棄連線之前重試的次數;0 表示僅嘗試 1 次 (且不重試)。預設值為 12 次嘗試。嘗試之間的等待時間由
--connect-retry-delay
選項控制。也可以將此選項設定為 -1,在這種情況下,資料節點程序會無限期地持續嘗試連線。
-
命令列格式 --connect-retry-delay=#
類型 數值 預設值 5
最小值 0
最大值 4294967295
決定在啟動時嘗試聯繫管理伺服器之間的等待時間 (嘗試之間的等待時間由
--connect-retries
選項控制)。預設值為 5 秒。此選項取代了
--connect-delay
選項,該選項現在已棄用,並可能會在 NDB Cluster 的未來版本中移除。此選項的簡短形式
-r
也已棄用,因此可能會移除。請改用長形式。 -
命令列格式 --connect-string=connection_string
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --core-file
在發生錯誤時寫入核心檔案;用於偵錯。
--daemon
、-d
命令列格式 --daemon
指示 ndbd 或 ndbmtd 作為精靈程序執行。這是預設行為。可以使用
--nodaemon
來防止該程序作為精靈執行。-
命令列格式 --defaults-extra-file=路徑
類型 字串 預設值 [無]
在讀取全域檔案後讀取指定的檔案。
-
命令列格式 --defaults-file=路徑
類型 字串 預設值 [無]
僅從指定的檔案讀取預設選項。
-
命令列格式 --defaults-group-suffix=字串
類型 字串 預設值 [無]
也讀取具有 concat(group, suffix) 的群組。
-
命令列格式 --filesystem-password=密碼
使用
stdin
、tty
或my.cnf
檔案,將檔案系統加密和解密密碼傳遞給資料節點程序。如需詳細資訊,請參閱第 25.6.14 節,「NDB Cluster 的檔案系統加密」。
--filesystem-password-from-stdin
命令列格式 --filesystem-password-from-stdin={TRUE|FALSE}
從
stdin
(僅限) 將檔案系統加密和解密密碼傳遞至資料節點程序。如需詳細資訊,請參閱第 25.6.14 節,「NDB Cluster 的檔案系統加密」。
-
命令列格式 --foreground
使 ndbd 或 ndbmtd 作為前景程序執行,主要用於除錯目的。此選項隱含
--nodaemon
選項。 -
命令列格式 --help
顯示說明文字並結束。
-
命令列格式 --initial
指示 ndbd 執行初始啟動。初始啟動會清除先前 ndbd 執行個體為復原目的所建立的任何檔案。它也會重新建立復原記錄檔。在某些作業系統上,此程序可能需要相當長的時間。
此選項也會移除與磁碟資料表空間相關聯的所有資料檔案,以及與先前在此資料節點上存在的記錄檔群組相關聯的復原記錄檔 (請參閱 第 25.6.11 節,「NDB 叢集磁碟資料表」)。
只有在非常特殊的情況下啟動 ndbd 程序時,才應使用
--initial
啟動;這是因為此選項會導致所有檔案從 NDB 叢集檔案系統中移除,並重新建立所有重做記錄檔。這些情況如下列出在執行軟體升級而變更任何檔案的內容時。
在重新啟動節點時,使用新版本的 ndbd。
當由於某些原因,節點重新啟動或系統重新啟動重複失敗時,作為最後的手段。在這種情況下,請注意,由於資料檔案已損毀,此節點無法再用於還原資料。
警告為避免最終可能發生資料遺失,建議您不要將
--initial
選項與StopOnError = 0
一起使用。相反地,請在叢集啟動後才在config.ini
中將StopOnError
設定為 0,然後正常重新啟動資料節點,也就是說,不要使用--initial
選項。如需有關此問題的詳細說明,請參閱StopOnError
參數的說明。(錯誤 #24945638)使用此選項會使
StartPartialTimeout
和StartPartitionedTimeout
組態參數失效。重要事項此選項不會影響受影響節點已建立的備份檔案。
此選項對於剛從已在執行的資料節點啟動 (或重新啟動) 的資料節點復原資料也沒有影響 (除非它們也以
--initial
作為初始重新啟動的一部分啟動)。資料的此復原會自動發生,且在正常執行的 NDB 叢集中不需要使用者介入。在首次啟動叢集時 (也就是說,在建立任何資料節點檔案之前) 可以使用此選項;但是,沒有必要這樣做。
-
命令列格式 --initial-start
此選項用於執行叢集的局部初始啟動。每個節點都應該使用此選項啟動,以及
--nowait-nodes
。假設您有一個 4 節點的叢集,其資料節點的 ID 為 2、3、4 和 5,而您希望僅使用節點 2、4 和 5 執行局部初始啟動,也就是說,省略節點 3
$> ndbd --ndb-nodeid=2 --nowait-nodes=3 --initial-start $> ndbd --ndb-nodeid=4 --nowait-nodes=3 --initial-start $> ndbd --ndb-nodeid=5 --nowait-nodes=3 --initial-start
使用此選項時,您也必須使用
--ndb-nodeid
選項,指定要啟動的資料節點的節點 ID。重要事項不要將此選項與
--nowait-nodes
選項混淆,後者適用於 ndb_mgmd,可以用於啟用已設定多個管理伺服器的叢集,即使並非所有管理伺服器都在線上也可以啟動。 -
命令列格式 --install[=name]
平台專屬 Windows 類型 字串 預設值 ndbd
使 ndbd 安裝為 Windows 服務。您可以選擇性地指定服務的名稱;如果未設定,則服務名稱預設為
ndbd
。雖然最好在my.ini
或my.cnf
組態檔中指定其他 ndbd 程式選項,但也可以與--install
一起使用。但是,在這種情況下,必須先指定--install
選項,然後才能指定任何其他選項,Windows 服務安裝才能成功。一般來說,不建議將此選項與
--initial
選項一起使用,因為這會導致每次停止並啟動服務時都清除並重建資料節點檔案系統。如果您打算將任何其他會影響資料節點啟動的 ndbd 選項 (包括--initial-start
、--nostart
和--nowait-nodes
) 與--install
一起使用,也應該非常小心,且應該完全理解並允許這樣做的任何可能後果。--install
選項在非 Windows 平台上沒有任何作用。 -
命令列格式 --logbuffer-size=#
類型 整數 預設值 32768
最小值 2048
最大值 4294967295
設定資料節點記錄緩衝區的大小。當以大量額外記錄進行除錯時,如果記錄訊息太多,記錄緩衝區可能會用完空間,在這種情況下可能會遺失一些記錄訊息。這在正常運作期間不應該發生。
-
命令列格式 --login-path=path
類型 字串 預設值 [無]
從登入檔案讀取給定的路徑。
-
命令列格式 --no-login-paths
略過從登入路徑檔案讀取選項。
-
命令列格式 --ndb-connectstring=connection_string
類型 字串 預設值 [無]
設定用於連線至 ndb_mgmd 的連線字串。語法:
[nodeid=
。覆寫id
;][host=]hostname
[:port
]NDB_CONNECTSTRING
和my.cnf
中的項目。 -
命令列格式 --ndb-mgmd-host=connection_string
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --ndb-mgm-tls=level
類型 列舉 預設值 relaxed
有效值 relaxed
strict
設定連線至管理伺服器所需的 TLS 支援層級;
relaxed
或strict
其中之一。relaxed
(預設) 表示會嘗試 TLS 連線,但並非必要;strict
表示必須使用 TLS 才能連線。 -
命令列格式 --ndb-nodeid=#
類型 整數 預設值 [無]
設定此節點的節點 ID,覆寫由 --ndb-connectstring 設定的任何 ID。
--ndb-optimized-node-selection
命令列格式 --ndb-optimized-node-selection
啟用交易節點選擇的最佳化。預設為啟用;使用
--skip-ndb-optimized-node-selection
停用。-
命令列格式 --ndb-tls-search-path=list
類型 路徑名稱 預設值 (Unix) $HOME/ndb-tls
預設值 (Windows) $HOMEDIR/ndb-tls
指定要搜尋 CA 檔案的目錄清單。在 Unix 平台上,目錄名稱以冒號 (
:
) 分隔;在 Windows 系統上,使用分號字元 (;
) 作為分隔符號。目錄參考可以是相對或絕對的;它可能包含一或多個環境變數,每個環境變數都以美元符號 ($
) 作為前綴,並在使用前展開。搜尋從最左側的命名目錄開始,並從左向右進行,直到找到檔案為止。空字串表示空的搜尋路徑,這會導致所有搜尋失敗。由單一點 (
.
) 組成的字串表示搜尋路徑限制為目前的工作目錄。如果未提供任何搜尋路徑,則會使用編譯的預設值。此值取決於所使用的平台:在 Windows 上,此值為
\ndb-tls
;在其他平台 (包括 Linux) 上,此值為$HOME/ndb-tls
。可以使用-DWITH_NDB_TLS_SEARCH_PATH
編譯 NDB 叢集來覆寫此值。 -
命令列格式 --nodaemon
防止 ndbd 或 ndbmtd 作為精靈程序執行。此選項會覆寫
--daemon
選項。這在除錯二進位檔時,對於將輸出重新導向到螢幕很有用。在 Windows 上,ndbd 和 ndbmtd 的預設行為是在前景執行,因此此選項在 Windows 平台上是不必要的,並且不會產生任何效果。
-
命令列格式 --no-defaults
不從登入檔案以外的任何選項檔案讀取預設選項。
--nostart
,-n
命令列格式 --nostart
指示 ndbd 不要自動啟動。當使用此選項時,ndbd 會連線到管理伺服器,從中取得組態資料,並初始化通訊物件。然而,它實際上不會啟動執行引擎,直到管理伺服器特別要求這樣做。這可以通過在管理客戶端中發出適當的
START
命令來完成(請參閱 第 25.6.1 節,「NDB Cluster 管理客戶端中的命令」)。--nowait-nodes=
node_id_1
[,node_id_2
[, ...]]命令列格式 --nowait-nodes=列表
類型 字串 預設值 此選項會採用一個資料節點列表,在啟動之前,叢集不會等待這些節點。
這可以用於在分割狀態下啟動叢集。例如,若要僅在 4 節點叢集中啟動一半的資料節點(節點 2、3、4 和 5),您可以針對每個 ndbd 程序,使用
--nowait-nodes=3,5
來啟動。在這種情況下,叢集會在節點 2 和 4 連線後立即啟動,並且不會等待StartPartitionedTimeout
毫秒,讓節點 3 和 5 連線(否則會等待)。如果您想要在沒有一個 ndbd 的情況下啟動與上一個範例相同的叢集(例如,節點 3 的主機發生硬體故障),那麼請使用
--nowait-nodes=3
來啟動節點 2、4 和 5。然後,叢集會在節點 2、4 和 5 連線後立即啟動,而不會等待節點 3 啟動。-
命令列格式 --print-defaults
列印程式引數列表並結束。
-
命令列格式 --remove[=名稱]
平台專屬 Windows 類型 字串 預設值 ndbd
導致先前安裝為 Windows 服務的 ndbd 程序被移除。您可以選擇性地為要解除安裝的服務指定名稱;如果未設定,則服務名稱預設為
ndbd
。--remove
選項在非 Windows 平台上無效。 -
命令列格式 --usage
顯示說明文字並結束;與 --help 相同。
--verbose
,-v
導致額外的偵錯輸出寫入節點日誌。
您也可以使用
NODELOG DEBUG ON
和NODELOG DEBUG OFF
,在資料節點執行時啟用和停用此額外的記錄。-
命令列格式 --version
顯示版本資訊並結束。
ndbd 會產生一組記錄檔,這些記錄檔會放置在 config.ini
組態檔中 DataDir
指定的目錄中。
這些記錄檔如下列出。node_id
是且代表節點的唯一識別碼。例如,ndb_2_error.log
是由節點 ID 為 2
的資料節點產生的錯誤記錄。
ndb_
是一個包含所有參考的 ndbd 程序所遇到的當機記錄的檔案。此檔案中的每個記錄都包含一個簡短的錯誤字串以及此當機的追蹤檔案的參考。此檔案中的典型項目可能如下所示node_id
_error.logDate/Time: Saturday 30 July 2004 - 00:20:01 Type of error: error Message: Internal program error (failed ndbrequire) Fault ID: 2341 Problem data: DbtupFixAlloc.cpp Object of reference: DBTUP (Line: 173) ProgramName: NDB Kernel ProcessID: 14909 TraceFile: ndb_2_trace.log.2 ***EOM***
在 資料節點錯誤訊息中可以找到當資料節點程序過早關閉時產生的可能 ndbd 結束代碼和訊息的列表。
重要事項錯誤記錄檔中的最後一個項目不一定是最新的一個(也不太可能是)。錯誤記錄中的項目不是按時間順序排列的;相反地,它們對應於
ndb_
檔案(請參閱下文)中確定的追蹤檔案順序。因此,錯誤記錄項目是以循環而非循序的方式覆寫。node_id
_trace.log.nextndb_
是一個追蹤檔案,描述錯誤發生前發生的確切情況。此資訊對於 NDB Cluster 開發團隊進行分析很有用。node_id
_trace.log.trace_id
可以設定在覆寫舊檔案之前建立的追蹤檔案數量。
trace_id
是一個數字,每次追蹤檔案都會遞增。ndb_
是追蹤要指派的下一個追蹤檔案編號的檔案。node_id
_trace.log.nextndb_
是一個包含 ndbd 程序輸出的任何資料的檔案。只有在 ndbd 以守護程序啟動時才會建立此檔案,這也是預設行為。node_id
_out.logndb_
是一個包含以守護程序啟動時 ndbd 程序之程序 ID 的檔案。它還充當鎖定檔案,以避免啟動具有相同識別碼的節點。node_id
.pidndb_
是一個僅在 ndbd 的偵錯版本中使用的檔案,在偵錯版本中,可以追蹤 ndbd 程序中的所有傳入、傳出和內部訊息及其資料。node_id
_signal.log
建議不要使用通過 NFS 掛載的目錄,因為在某些環境中,這可能會導致即使在程序終止後,.pid
檔案上的鎖定仍然有效而產生問題。
若要啟動 ndbd,可能還需要指定管理伺服器的主機名稱及其正在監聽的連接埠。或者,也可以指定程序要使用的節點 ID。
$> ndbd --connect-string="nodeid=2;host=ndb_mgmd.mysql.com:1186"
請參閱 第 25.4.3.3 節,「NDB Cluster 連接字串」,以取得有關此問題的更多資訊。如需有關資料節點組態參數的更多資訊,請參閱 第 25.4.3.6 節,「定義 NDB Cluster 資料節點」。
當 ndbd 啟動時,它實際上會啟動兩個程序。第一個稱為「天使程序」;它的唯一工作是發現執行程序何時完成,然後在設定為這樣做時重新啟動 ndbd 程序。因此,如果您嘗試使用 Unix kill 命令來終止 ndbd,則必須先從天使程序開始終止這兩個程序。終止 ndbd 程序的首選方法是使用管理客戶端,並從那裡停止該程序。
執行程序使用一個執行緒來進行讀取、寫入、掃描資料以及所有其他活動。此執行緒以非同步方式實作,以便輕鬆處理數千個並行動作。此外,還有一個看門狗執行緒監控執行執行緒,以確保它不會陷入無窮迴圈。一個執行緒池處理檔案 I/O,每個執行緒能夠處理一個開啟的檔案。執行緒也可以用於 ndbd 程序中的傳輸器連線。在執行大量操作(包括更新)的多處理器系統中,如果允許,ndbd 程序最多可消耗 2 個 CPU。
對於具有多個 CPU 的機器,可以使用屬於不同節點群組的多個 ndbd 程序;然而,此類配置仍被視為實驗性配置,在生產環境中不支援 MySQL 9.0。請參閱 第 25.2.7 節, “NDB Cluster 的已知限制”。