文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  ndbd — NDB Cluster 資料節點精靈

25.5.1 ndbd — NDB Cluster 資料節點精靈

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 的選項。其他說明如下表所示。

注意

所有這些選項也適用於此程式的多執行緒版本 (ndbmtd),而且您可以將 ndbmtd 取代本節中出現的所有 ndbd

  • --bind-address

    命令列格式 --bind-address=名稱
    類型 字串
    預設值

    導致 ndbd 繫結至特定的網路介面 (主機名稱或 IP 位址)。此選項沒有預設值。

  • --character-sets-dir

    命令列格式 --character-sets-dir=路徑

    包含字元集的目錄。

  • --connect-delay=#

    命令列格式 --connect-delay=#
    已棄用
    類型 數值
    預設值 5
    最小值 0
    最大值 3600

    決定在啟動時嘗試聯繫管理伺服器之間的等待時間 (嘗試次數由 --connect-retries 選項控制)。預設值為 5 秒。

    此選項已棄用,並可能會在 NDB Cluster 的未來版本中移除。請改用 --connect-retry-delay

  • --connect-retries=#

    命令列格式 --connect-retries=#
    類型 數值
    預設值 12
    最小值 -1
    最大值 65535

    設定放棄連線之前重試的次數;0 表示僅嘗試 1 次 (且不重試)。預設值為 12 次嘗試。嘗試之間的等待時間由 --connect-retry-delay 選項控制。

    也可以將此選項設定為 -1,在這種情況下,資料節點程序會無限期地持續嘗試連線。

  • --connect-retry-delay=#

    命令列格式 --connect-retry-delay=#
    類型 數值
    預設值 5
    最小值 0
    最大值 4294967295

    決定在啟動時嘗試聯繫管理伺服器之間的等待時間 (嘗試之間的等待時間由 --connect-retries 選項控制)。預設值為 5 秒。

    此選項取代了 --connect-delay 選項,該選項現在已棄用,並可能會在 NDB Cluster 的未來版本中移除。

    此選項的簡短形式 -r 也已棄用,因此可能會移除。請改用長形式。

  • --connect-string

    命令列格式 --connect-string=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --core-file

    命令列格式 --core-file

    在發生錯誤時寫入核心檔案;用於偵錯。

  • --daemon-d

    命令列格式 --daemon

    指示 ndbdndbmtd 作為精靈程序執行。這是預設行為。可以使用 --nodaemon 來防止該程序作為精靈執行。

    在 Windows 平台上執行 ndbdndbmtd 時,此選項無效。

  • --defaults-extra-file

    命令列格式 --defaults-extra-file=路徑
    類型 字串
    預設值 [無]

    在讀取全域檔案後讀取指定的檔案。

  • --defaults-file

    命令列格式 --defaults-file=路徑
    類型 字串
    預設值 [無]

    僅從指定的檔案讀取預設選項。

  • --defaults-group-suffix

    命令列格式 --defaults-group-suffix=字串
    類型 字串
    預設值 [無]

    也讀取具有 concat(group, suffix) 的群組。

  • --filesystem-password

    命令列格式 --filesystem-password=密碼

    使用 stdinttymy.cnf 檔案,將檔案系統加密和解密密碼傳遞給資料節點程序。

    需要 EncryptedFileSystem = 1

    如需詳細資訊,請參閱第 25.6.14 節,「NDB Cluster 的檔案系統加密」

  • --filesystem-password-from-stdin

    命令列格式 --filesystem-password-from-stdin={TRUE|FALSE}

    stdin (僅限) 將檔案系統加密和解密密碼傳遞至資料節點程序。

    需要 EncryptedFileSystem = 1

    如需詳細資訊,請參閱第 25.6.14 節,「NDB Cluster 的檔案系統加密」

  • --foreground

    命令列格式 --foreground

    使 ndbdndbmtd 作為前景程序執行,主要用於除錯目的。此選項隱含 --nodaemon 選項。

    在 Windows 平台上執行 ndbdndbmtd 時,此選項無效。

  • --help

    命令列格式 --help

    顯示說明文字並結束。

  • --initial

    命令列格式 --initial

    指示 ndbd 執行初始啟動。初始啟動會清除先前 ndbd 執行個體為復原目的所建立的任何檔案。它也會重新建立復原記錄檔。在某些作業系統上,此程序可能需要相當長的時間。

    此選項也會移除與磁碟資料表空間相關聯的所有資料檔案,以及與先前在此資料節點上存在的記錄檔群組相關聯的復原記錄檔 (請參閱 第 25.6.11 節,「NDB 叢集磁碟資料表」)。

    只有在非常特殊的情況下啟動 ndbd 程序時,才應使用 --initial 啟動;這是因為此選項會導致所有檔案從 NDB 叢集檔案系統中移除,並重新建立所有重做記錄檔。這些情況如下列出

    • 在執行軟體升級而變更任何檔案的內容時。

    • 在重新啟動節點時,使用新版本的 ndbd

    • 當由於某些原因,節點重新啟動或系統重新啟動重複失敗時,作為最後的手段。在這種情況下,請注意,由於資料檔案已損毀,此節點無法再用於還原資料。

    警告

    為避免最終可能發生資料遺失,建議您不要--initial 選項與 StopOnError = 0 一起使用。相反地,請在叢集啟動後才在 config.ini 中將 StopOnError 設定為 0,然後正常重新啟動資料節點,也就是說,不要使用 --initial 選項。如需有關此問題的詳細說明,請參閱 StopOnError 參數的說明。(錯誤 #24945638)

    使用此選項會使 StartPartialTimeoutStartPartitionedTimeout 組態參數失效。

    重要事項

    此選項不會影響受影響節點已建立的備份檔案。

    此選項對於剛從已在執行的資料節點啟動 (或重新啟動) 的資料節點復原資料也沒有影響 (除非它們也以 --initial 作為初始重新啟動的一部分啟動)。資料的此復原會自動發生,且在正常執行的 NDB 叢集中不需要使用者介入。

    在首次啟動叢集時 (也就是說,在建立任何資料節點檔案之前) 可以使用此選項;但是,沒有必要這樣做。

  • --initial-start

    命令列格式 --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]

    命令列格式 --install[=name]
    平台專屬 Windows
    類型 字串
    預設值 ndbd

    使 ndbd 安裝為 Windows 服務。您可以選擇性地指定服務的名稱;如果未設定,則服務名稱預設為 ndbd。雖然最好在 my.inimy.cnf 組態檔中指定其他 ndbd 程式選項,但也可以與 --install 一起使用。但是,在這種情況下,必須先指定 --install 選項,然後才能指定任何其他選項,Windows 服務安裝才能成功。

    一般來說,不建議將此選項與 --initial 選項一起使用,因為這會導致每次停止並啟動服務時都清除並重建資料節點檔案系統。如果您打算將任何其他會影響資料節點啟動的 ndbd 選項 (包括 --initial-start--nostart--nowait-nodes) 與 --install 一起使用,也應該非常小心,且應該完全理解並允許這樣做的任何可能後果。

    --install 選項在非 Windows 平台上沒有任何作用。

  • --logbuffer-size=#

    命令列格式 --logbuffer-size=#
    類型 整數
    預設值 32768
    最小值 2048
    最大值 4294967295

    設定資料節點記錄緩衝區的大小。當以大量額外記錄進行除錯時,如果記錄訊息太多,記錄緩衝區可能會用完空間,在這種情況下可能會遺失一些記錄訊息。這在正常運作期間不應該發生。

  • --login-path

    命令列格式 --login-path=path
    類型 字串
    預設值 [無]

    從登入檔案讀取給定的路徑。

  • --no-login-paths

    命令列格式 --no-login-paths

    略過從登入路徑檔案讀取選項。

  • --ndb-connectstring

    命令列格式 --ndb-connectstring=connection_string
    類型 字串
    預設值 [無]

    設定用於連線至 ndb_mgmd 的連線字串。語法:[nodeid=id;][host=]hostname[:port]。覆寫 NDB_CONNECTSTRINGmy.cnf 中的項目。

  • --ndb-mgmd-host

    命令列格式 --ndb-mgmd-host=connection_string
    類型 字串
    預設值 [無]

    --ndb-connectstring 相同。

  • --ndb-mgm-tls

    命令列格式 --ndb-mgm-tls=level
    類型 列舉
    預設值 relaxed
    有效值

    relaxed

    strict

    設定連線至管理伺服器所需的 TLS 支援層級;relaxedstrict 其中之一。relaxed (預設) 表示會嘗試 TLS 連線,但並非必要;strict 表示必須使用 TLS 才能連線。

  • --ndb-nodeid

    命令列格式 --ndb-nodeid=#
    類型 整數
    預設值 [無]

    設定此節點的節點 ID,覆寫由 --ndb-connectstring 設定的任何 ID。

  • --ndb-optimized-node-selection

    命令列格式 --ndb-optimized-node-selection

    啟用交易節點選擇的最佳化。預設為啟用;使用 --skip-ndb-optimized-node-selection 停用。

  • --ndb-tls-search-path

    命令列格式 --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

    命令列格式 --nodaemon

    防止 ndbdndbmtd 作為精靈程序執行。此選項會覆寫 --daemon 選項。這在除錯二進位檔時,對於將輸出重新導向到螢幕很有用。

    在 Windows 上,ndbdndbmtd 的預設行為是在前景執行,因此此選項在 Windows 平台上是不必要的,並且不會產生任何效果。

  • --no-defaults

    命令列格式 --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

    命令列格式 --print-defaults

    列印程式引數列表並結束。

  • --remove[=name]

    命令列格式 --remove[=名稱]
    平台專屬 Windows
    類型 字串
    預設值 ndbd

    導致先前安裝為 Windows 服務的 ndbd 程序被移除。您可以選擇性地為要解除安裝的服務指定名稱;如果未設定,則服務名稱預設為 ndbd

    --remove 選項在非 Windows 平台上無效。

  • --usage

    命令列格式 --usage

    顯示說明文字並結束;與 --help 相同。

  • --verbose, -v

    導致額外的偵錯輸出寫入節點日誌。

    您也可以使用 NODELOG DEBUG ONNODELOG DEBUG OFF,在資料節點執行時啟用和停用此額外的記錄。

  • --version

    命令列格式 --version

    顯示版本資訊並結束。

ndbd 會產生一組記錄檔,這些記錄檔會放置在 config.ini 組態檔中 DataDir 指定的目錄中。

這些記錄檔如下列出。node_id 是且代表節點的唯一識別碼。例如,ndb_2_error.log 是由節點 ID 為 2 的資料節點產生的錯誤記錄。

  • ndb_node_id_error.log 是一個包含所有參考的 ndbd 程序所遇到的當機記錄的檔案。此檔案中的每個記錄都包含一個簡短的錯誤字串以及此當機的追蹤檔案的參考。此檔案中的典型項目可能如下所示

    Date/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.next 檔案(請參閱下文)中確定的追蹤檔案順序。因此,錯誤記錄項目是以循環而非循序的方式覆寫。

  • ndb_node_id_trace.log.trace_id 是一個追蹤檔案,描述錯誤發生前發生的確切情況。此資訊對於 NDB Cluster 開發團隊進行分析很有用。

    可以設定在覆寫舊檔案之前建立的追蹤檔案數量。trace_id 是一個數字,每次追蹤檔案都會遞增。

  • ndb_node_id_trace.log.next 是追蹤要指派的下一個追蹤檔案編號的檔案。

  • ndb_node_id_out.log 是一個包含 ndbd 程序輸出的任何資料的檔案。只有在 ndbd 以守護程序啟動時才會建立此檔案,這也是預設行為。

  • ndb_node_id.pid 是一個包含以守護程序啟動時 ndbd 程序之程序 ID 的檔案。它還充當鎖定檔案,以避免啟動具有相同識別碼的節點。

  • ndb_node_id_signal.log 是一個僅在 ndbd 的偵錯版本中使用的檔案,在偵錯版本中,可以追蹤 ndbd 程序中的所有傳入、傳出和內部訊息及其資料。

建議不要使用通過 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 的已知限制”