ndbd 二進位檔案提供了單執行緒版本的處理程序,用於處理使用 NDBCLUSTER
儲存引擎的表格中的所有資料。此資料節點處理程序使資料節點能夠完成分散式交易處理、節點復原、檢查點到磁碟、線上備份以及相關任務。在 NDB 8.4.1 及更高版本中,當啟動時,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 處理程序協作處理資料。這些處理程序可以在同一台電腦(主機)或不同的電腦上執行。資料節點與 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=連線字串
類型 字串 預設值 [無]
與
--ndb-connectstring
相同。 -
命令列格式 --core-file
發生錯誤時寫入核心檔案;用於除錯。
--daemon
,-d
命令列格式 --daemon
指示 ndbd 或 ndbmtd 作為守護處理程序執行。這是預設行為。
--nodaemon
可用於防止處理程序作為守護程式執行。-
命令列格式 --defaults-extra-file=路徑
類型 字串 預設值 [無]
在讀取全域檔案後讀取給定的檔案。
-
命令列格式 --defaults-file=路徑
類型 字串 預設值 [無]
僅從給定的檔案讀取預設選項。
-
命令列格式 --defaults-group-suffix=字串
類型 字串 預設值 [無]
也讀取 concat(群組, 後綴) 的群組。
-
命令列格式 --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 Cluster 磁碟資料表格〉)。
僅當在非常特殊的情況下啟動 ndbd 處理程序時,才應使用
--initial
啟動;這是因為此選項會導致從 NDB Cluster 檔案系統移除所有檔案,並重新建立所有重做記錄檔。這些情況如下所示當執行軟體升級且已變更任何檔案的內容時。
當使用新版本的 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 平台上是不必要的,它在 Windows 平台上無效。
-
命令列格式 --no-defaults
不要從登入檔以外的任何選項檔案讀取預設選項。
--nostart
,-n
命令列格式 --nostart
指示 ndbd 不要自動啟動。使用此選項時,ndbd 會連線到管理伺服器,從中取得組態資料,並初始化通訊物件。但是,它實際上不會啟動執行引擎,除非管理伺服器明確要求這樣做。這可以透過在管理用戶端中發出正確的
START
命令來完成(請參閱 第 25.6.1 節「NDB 叢集管理用戶端中的命令」)。--nowait-nodes=
node_id_1
[,node_id_2
[, ...]]命令列格式 --nowait-nodes=list
類型 字串 預設值 此選項會採用叢集在啟動之前不等待的資料節點清單。
這可用於在分割狀態下啟動叢集。例如,若要僅使用一半的資料節點 (節點 2、3、4 和 5) 在 4 節點叢集中啟動叢集,您可以使用
--nowait-nodes=3,5
啟動每個 ndbd 程序。在這種情況下,叢集會在節點 2 和 4 連線後立即啟動,而不會等待StartPartitionedTimeout
毫秒,讓節點 3 和 5 連線,否則會這樣做。如果您想啟動與前一個範例相同的叢集,但少一個 ndbd(例如,節點 3 的主機發生硬體故障),則請使用
--nowait-nodes=3
啟動節點 2、4 和 5。這樣,叢集會在節點 2、4 和 5 連接後立即啟動,而不會等待節點 3 啟動。-
命令列格式 --print-defaults
列印程式引數清單並結束。
-
命令列格式 --remove[=name]
平台特定 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 叢集開發團隊的分析很有用。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 叢集連線字串」。如需資料節點組態參數的更多資訊,請參閱第 25.4.3.6 節「定義 NDB 叢集資料節點」。
當 ndbd 啟動時,它實際上會啟動兩個程序。第一個稱為「天使程序」;它唯一的工作是發現執行程序何時完成,然後在設定的情況下重新啟動 ndbd 程序。因此,如果您嘗試使用 Unix kill 命令來終止 ndbd,則必須先終止天使程序,然後再終止兩個程序。終止 ndbd 程序的較佳方法是使用管理用戶端從那裡停止程序。
執行程序使用一個執行緒進行資料的讀取、寫入和掃描,以及所有其他活動。此執行緒是非同步實作的,因此可以輕鬆處理數千個並行動作。此外,看門狗執行緒會監視執行執行緒,以確保它不會在無限迴圈中掛起。執行緒池處理檔案 I/O,每個執行緒都能夠處理一個開啟的檔案。執行緒也可以由 ndbd 程序中的傳輸器用於傳輸器連線。在執行大量操作(包括更新)的多處理器系統中,如果允許,ndbd 程序最多可以使用 2 個 CPU。
對於具有許多 CPU 的機器,可以使用屬於不同節點群組的數個 ndbd 程序;但是,此類組態仍然被認為是實驗性的,並且不支援在 MySQL 8.4 的生產環境中使用。請參閱第 25.2.7 節「NDB 叢集的已知限制」。