config.ini
檔案中的 [mysqld]
和 [api]
區段定義用於存取叢集資料的 MySQL 伺服器(SQL 節點)和其他應用程式(API 節點)的行為。所顯示的參數都不是必要的。如果未提供電腦或主機名稱,則任何主機都可以使用此 SQL 或 API 節點。
一般而言,[mysqld]
區段用於指示提供叢集 SQL 介面的 MySQL 伺服器,而 [api]
區段用於存取叢集資料的 mysqld 程序以外的應用程式,但這兩種指定實際上是同義的;例如,您可以在 [api]
區段中列出作為 SQL 節點的 MySQL 伺服器參數。
關於 NDB 叢集的 MySQL 伺服器選項的討論,請參閱章節 25.4.3.9.1,「NDB 叢集的 MySQL 伺服器選項」。關於與 NDB 叢集相關的 MySQL 伺服器系統變數的資訊,請參閱章節 25.4.3.9.2,「NDB 叢集系統變數」。
-
版本(或更新版本) NDB 8.4.0 類型或單位 無符號 預設 [...] 範圍 1 - 255 重新啟動類型 初始系統重新啟動:需要完整關閉叢集、從備份清除和還原叢集檔案系統,然後重新啟動叢集。(NDB 8.4.0)
Id
是一個整數值,用於識別所有叢集內部訊息中的節點。允許的值範圍是 1 到 255 (含)。此值對於叢集中的每個節點必須是唯一的,無論節點類型為何。注意資料節點 ID 必須小於 145。如果您計劃部署大量資料節點,最好將 API 節點 (和管理節點) 的節點 ID 限制為大於 144 的值。
當識別 API 節點時,
NodeId
是建議使用的參數名稱。(為了向後相容,仍支援Id
,但現在已棄用,並且在使用時會產生警告。未來也可能會移除。) -
版本(或更新版本) NDB 8.4.0 類型或單位 字串 預設 [...] 範圍 ... 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
指定要連線的資料節點。
-
版本(或更新版本) NDB 8.4.0 類型或單位 無符號 預設 [...] 範圍 1 - 255 重新啟動類型 初始系統重新啟動:需要完整關閉叢集、從備份清除和還原叢集檔案系統,然後重新啟動叢集。(NDB 8.4.0)
NodeId
是一個整數值,用於識別所有叢集內部訊息中的節點。允許的值範圍是 1 到 255 (含)。此值對於叢集中的每個節點必須是唯一的,無論節點類型為何。注意資料節點 ID 必須小於 145。如果您計劃部署大量資料節點,最好將 API 節點 (和管理節點) 的節點 ID 限制為大於 144 的值。
當識別管理節點時,
NodeId
是建議使用的參數名稱。在非常舊版本的 NDB 叢集中,曾使用別名Id
來達到此目的,並且為了向後相容而繼續支援此別名;但現在已棄用,並且在使用時會產生警告,且未來版本的 NDB 叢集中可能會移除。 -
版本(或更新版本) NDB 8.4.0 類型或單位 名稱 預設 [...] 範圍 ... 已棄用 是 (在 NDB 7.5 中) 重新啟動類型 系統重新啟動:需要完整關閉並重新啟動叢集。(NDB 8.4.0)
這指的是在組態檔案的
[computer]
區段中定義的其中一台電腦 (主機) 所設定的Id
。重要此參數已棄用,未來版本可能會移除。請改用
HostName
參數。 此節點的節點 ID 只能提供給明確要求的連線。要求「任何」節點 ID 的管理伺服器無法使用此 ID。當在同一主機上執行多個管理伺服器時,可以使用此參數,且
HostName
不足以區分各個程序。適用於測試。-
版本(或更新版本) NDB 8.4.0 類型或單位 名稱或 IP 位址 預設 [...] 範圍 ... 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
指定此參數會定義 SQL 節點 (API 節點) 所在的電腦主機名稱。使用
HostName
來指定localhost
以外的主機名稱。如果未在
config.ini
檔案的特定[mysql]
或[api]
區段中指定HostName
,則 SQL 或 API 節點可以使用任何可以與管理伺服器主機電腦建立網路連線的主機的對應「插槽」進行連線。 這與資料節點的預設行為不同,其中HostName
假設為localhost
,除非另有指定。 -
將 SQL 或其他 API 節點指派給雲端中的特定可用性網域 (也稱為可用性區域)。藉由告知
NDB
哪些節點位於哪些可用性網域中,可以透過以下方式改善雲端環境中的效能如果要求的資料在同一個節點上找不到,則可以將讀取導向至同一個可用性網域中的另一個節點。
不同可用性網域中節點之間的通訊保證使用
NDB
傳輸器的 WAN 支援,而無需任何進一步的手動介入。傳輸器的群組號碼可以根據所使用的可用性網域,以便 SQL 和其他 API 節點也盡可能與同一個可用性網域中的本機資料節點通訊。
仲裁器可以從沒有資料節點的可用性網域中選取,或者如果找不到這樣的可用性網域,則從第三個可用性網域中選取。
LocationDomainId
採用介於 0 到 16 (含) 之間的整數值,預設值為 0;使用 0 與不設定參數相同。 -
版本(或更新版本) NDB 8.4.0 類型或單位 0-2 預設 0 範圍 0 - 2 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
此參數定義哪些節點可以作為仲裁器。管理節點和 SQL 節點都可以是仲裁器。值為 0 表示永遠不會將指定節點用作仲裁器,值為 1 表示節點作為仲裁器具有高優先順序,而值為 2 表示節點作為仲裁器具有低優先順序。一般組態會使用管理伺服器作為仲裁器,將其
ArbitrationRank
設定為 1 (管理節點的預設值),並將所有 SQL 節點的ArbitrationRank
設定為 0 (SQL 節點的預設值)。藉由將所有管理和 SQL 節點上的
ArbitrationRank
設定為 0,您可以完全停用仲裁。您也可以藉由覆寫此參數來控制仲裁;若要執行此操作,請在config.ini
全域組態檔案的[ndbd default]
區段中設定Arbitration
參數。 -
版本(或更新版本) NDB 8.4.0 類型或單位 毫秒 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
將此參數設定為 0 (預設值) 以外的任何其他值,表示仲裁器對仲裁要求的響應會延遲所指定的毫秒數。通常不需要變更此值。
-
版本(或更新版本) NDB 8.4.0 類型或單位 位元組 預設 16K 範圍 1K - 1M 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
對於轉換為完整資料表掃描或索引範圍掃描的查詢,為了達到最佳效能,以適當大小的批次提取記錄非常重要。可以根據記錄數 (
BatchSize
) 和位元組數 (BatchByteSize
) 來設定適當的大小。實際的批次大小會受到這兩個參數的限制。查詢執行的速度可能會因這個參數的設定而差異超過 40%。
這個參數以位元組為單位測量。預設值為 16K。
-
版本(或更新版本) NDB 8.4.0 類型或單位 記錄 預設 256 範圍 1 - 992 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
這個參數以記錄數為單位測量,預設值設定為 256。最大大小為 992。
-
版本(或更新版本) NDB 8.4.0 類型或單位 位元組 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
這個參數指定除了使用
TotalSendBufferMemory
、SendBufferMemory
或兩者所設定的傳輸器發送緩衝區記憶體外,要額外配置的傳輸器發送緩衝區記憶體量。 -
版本(或更新版本) NDB 8.4.0 類型或單位 字串 預設 [...] 範圍 ... 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
使用此參數設定管理和 API 節點的心跳執行緒的排程策略和優先順序。設定此參數的語法如下所示
HeartbeatThreadPriority = policy[, priority] policy: {FIFO | RR}
設定此參數時,您必須指定一個策略。可以是
FIFO
(先進先出)或RR
(循環)。後面可以選擇性地加上優先順序(一個整數)。 -
版本(或更新版本) NDB 8.4.0 類型或單位 位元組 預設 256K 範圍 32K - 16M 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
批次大小是從每個資料節點發送的每個批次的大小。大多數掃描都是平行執行,以保護 MySQL 伺服器免於平行接收來自多個節點的過多資料;此參數設定所有節點的總批次大小的限制。
此參數的預設值設定為 256KB。其最大大小為 16MB。
-
版本(或更新版本) NDB 8.4.0 類型或單位 位元組 預設 0 範圍 256K - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
此參數用於決定在此節點上為所有已設定的傳輸器之間的共用發送緩衝區記憶體配置的總記憶體量。
如果設定了此參數,其允許的最小值為 256KB;0 表示該參數尚未設定。如需更多詳細資訊,請參閱 第 25.4.3.14 節,「設定 NDB 叢集發送緩衝區參數」。
-
版本(或更新版本) NDB 8.4.0 類型或單位 布林值 預設 false 範圍 true, false 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
預設情況下,此參數為
false
。這會強制斷線的 API 節點(包括充當 SQL 節點的 MySQL 伺服器)使用與叢集的新連線,而不是嘗試重複使用現有的連線,因為重複使用連線在使用動態配置的節點 ID 時可能會導致問題。(錯誤 #45921)注意可以使用 NDB API 覆寫此參數。如需更多資訊,請參閱 Ndb_cluster_connection::set_auto_reconnect() 和 Ndb_cluster_connection::get_auto_reconnect()。
DefaultOperationRedoProblemAction
版本(或更新版本) NDB 8.4.0 類型或單位 列舉 預設 QUEUE 範圍 ABORT, QUEUE 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
當將重做記錄刷新到磁碟所需的時間過長時,此參數(以及
RedoOverCommitLimit
和RedoOverCommitCounter
)控制資料節點對操作的處理方式。當給定的重做記錄刷新時間超過RedoOverCommitLimit
秒,超過RedoOverCommitCounter
次時,會發生這種情況,導致任何待處理的交易中止。發生這種情況時,節點可以根據
DefaultOperationRedoProblemAction
的值,以兩種方式中的任何一種方式回應,如下所示ABORT
:來自中止交易的任何待處理操作也會中止。QUEUE
:來自中止交易的待處理操作會排隊等待重試。這是預設值。當重做記錄空間不足時,待處理的操作仍會中止,也就是說,當發生 P_TAIL_PROBLEM 錯誤時。
-
版本(或更新版本) NDB 8.4.0 類型或單位 buckets 預設 3840 範圍 0 - 3840 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
可以使用此參數設定
NDB
使用的資料表雜湊對應的大小。DefaultHashMapSize
可以採用以下三個可能的值 (0、240、3840)。下表說明這些值及其效果。表格 25.16 DefaultHashMapSize 參數值
值 說明/效果 0
如果叢集中所有資料節點和 API 節點的此參數都設定了值,則使用設定的最小值;如果任何資料或 API 節點都未設定此值,則使用預設值。 240
舊的預設雜湊對應大小 3840
NDB 8.4 中預設使用的雜湊對應大小 此參數的最初用途是為了方便升級和降級到較舊的 NDB 叢集版本,由於此變更並非向後相容,因此雜湊對應大小有所不同。
-
版本(或更新版本) NDB 8.4.0 類型或單位 布林值 預設 false 範圍 true, false 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
將 WAN TCP 設定作為預設值。
-
版本(或更新版本) NDB 8.4.0 類型或單位 整數 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
在具有許多尚未啟動的資料節點的 NDB 叢集中,可以提高此參數的值,以規避連線嘗試至尚未開始在叢集中運作的資料節點,以及緩和管理節點的高流量。只要 API 節點未連線至任何新的資料節點,就會套用
StartConnectBackoffMaxTime
參數的值;否則,會使用ConnectBackoffMaxTime
來決定連線嘗試之間要等待的時間長度(以毫秒為單位)。當計算此參數的經過時間時,不會考慮節點連線嘗試 期間 所經過的時間。逾時會以大約 100 毫秒的解析度套用,從 100 毫秒的延遲開始;對於每次後續嘗試,此週期的長度會加倍,直到達到
ConnectBackoffMaxTime
毫秒,最高可達 100000 毫秒 (100 秒)。一旦 API 節點連線到資料節點,並且該節點(在心跳訊息中)報告它已連線到其他資料節點,則此參數不再影響對這些資料節點的連線嘗試,並且之後會每 100 毫秒執行一次,直到連線為止。資料節點啟動後,API 節點可能需要
HeartbeatIntervalDbApi
的時間才能收到已發生此情況的通知。 -
版本(或更新版本) NDB 8.4.0 類型或單位 整數 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)
在具有許多尚未啟動的資料節點的 NDB 叢集中,可以提高此參數的值,以規避連線嘗試至尚未開始在叢集中運作的資料節點,以及緩和管理節點的高流量。只要 API 節點未連線至任何新的資料節點,就會套用
StartConnectBackoffMaxTime
參數的值;否則,會使用ConnectBackoffMaxTime
來決定連線嘗試之間要等待的時間長度(以毫秒為單位)。當計算此參數的經過時間時,不會考慮節點連線嘗試 期間 所經過的時間。逾時會以大約 100 毫秒的解析度套用,從 100 毫秒的延遲開始;對於每次後續嘗試,此週期的長度會加倍,直到達到
StartConnectBackoffMaxTime
毫秒,最高可達 100000 毫秒 (100 秒)。一旦 API 節點連線到資料節點,並且該節點(在心跳訊息中)報告它已連線到其他資料節點,則此參數不再影響對這些資料節點的連線嘗試,並且之後會每 100 毫秒執行一次,直到連線為止。資料節點啟動後,API 節點可能需要
HeartbeatIntervalDbApi
的時間才能收到已發生此情況的通知。
API 節點除錯參數。 您可以使用 ApiVerbose
設定參數,啟用來自指定 API 節點的除錯輸出。此參數採用整數值。0 是預設值,並且會停用此類除錯;1 會啟用除錯輸出至叢集記錄;2 也會加入 DBDICT
除錯輸出。(錯誤 #20638450)另請參閱 DUMP 1229。
您也可以使用 SHOW STATUS
,從做為 NDB 叢集 SQL 節點執行的 MySQL 伺服器取得資訊,如下所示
mysql> SHOW STATUS LIKE 'ndb%';
+-----------------------------+----------------+
| Variable_name | Value |
+-----------------------------+----------------+
| Ndb_cluster_node_id | 5 |
| Ndb_config_from_host | 198.51.100.112 |
| Ndb_config_from_port | 1186 |
| Ndb_number_of_storage_nodes | 4 |
+-----------------------------+----------------+
4 rows in set (0.02 sec)
如需此陳述式輸出中顯示的狀態變數的相關資訊,請參閱 第 25.4.3.9.3 節,「NDB 叢集狀態變數」。
若要將新的 SQL 或 API 節點新增至正在執行的 NDB 叢集組態,則在將新的 [mysqld]
或 [api]
區段新增至 config.ini
檔案(或檔案,如果您使用多個管理伺服器)之後,必須執行所有叢集節點的滾動重新啟動。這必須在新 SQL 或 API 節點連線到叢集之前完成。
如果新的 SQL 或 API 節點可以使用叢集組態中先前未使用的 API 插槽來連線到叢集,則不需要執行叢集的任何重新啟動。
重新啟動類型。 下表顯示本節參數描述中使用的重新啟動類型的相關資訊
表格 25.17 NDB 叢集重新啟動類型
符號 | 重新啟動類型 | 說明 |
---|---|---|
N | 節點 | 可以使用滾動重新啟動來更新參數(請參閱 第 25.6.5 節,「執行 NDB 叢集的滾動重新啟動」) |
S | 系統 | 必須完全關閉所有叢集節點,然後重新啟動,才能影響此參數的變更 |
I | 初始 | 必須使用 --initial 選項重新啟動資料節點 |