文件首頁
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 參考手冊  /  ...  /  在 NDB 叢集中定義 SQL 和其他 API 節點

25.4.3.7 在 NDB 叢集中定義 SQL 和其他 API 節點

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 叢集系統變數」

  • Id

    版本(或更新版本) NDB
    類型或單位 unsigned
    預設 [...]
    範圍 1 - 255
    重新啟動類型

    初始系統重新啟動:需要完全關閉叢集,從 備份 清除並還原叢集檔案系統,然後重新啟動叢集。

    Id 是一個整數值,用於識別所有叢集內部訊息中的節點。允許的值範圍是 1 到 255(含)。此值對於叢集中的每個節點都必須是唯一的,無論節點類型為何。

    注意

    資料節點 ID 必須小於 145。如果您計劃部署大量資料節點,最好將 API 節點(和管理節點)的節點 ID 限制為大於 144 的值。

    識別 API 節點時,建議使用 NodeId 作為首選參數名稱。(Id 繼續支援以實現向後相容性,但現在已棄用,並且在使用時會產生警告。它也可能會在未來被移除。)

  • ConnectionMap

    版本(或更新版本) NDB
    類型或單位 字串
    預設 [...]
    範圍 ...
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    指定要連線的資料節點。

  • NodeId

    版本(或更新版本) NDB
    類型或單位 unsigned
    預設 [...]
    範圍 1 - 255
    重新啟動類型

    初始系統重新啟動:需要完全關閉叢集,從 備份 清除並還原叢集檔案系統,然後重新啟動叢集。

    NodeId 是一個整數值,用於識別所有叢集內部訊息中的節點。允許的值範圍是 1 到 255(含)。此值對於叢集中的每個節點都必須是唯一的,無論節點類型為何。

    注意

    資料節點 ID 必須小於 145。如果您計劃部署大量資料節點,最好將 API 節點(和管理節點)的節點 ID 限制為大於 144 的值。

    識別管理節點時,建議使用 NodeId 作為首選參數名稱。在非常舊版本的 NDB 叢集中,曾使用別名 Id 來達到此目的,並且繼續支援以實現向後相容性;但現在已棄用,並且在使用時會產生警告,而且可能會在未來版本的 NDB 叢集中移除。

  • ExecuteOnComputer

    版本(或更新版本) NDB
    類型或單位 名稱
    預設 [...]
    範圍 ...
    已棄用 是 (在 NDB 7.5 中)
    重新啟動類型

    系統重新啟動:需要完全關閉並重新啟動叢集。

    這指的是在組態檔的 [computer] 區段中定義的電腦 (主機) 之一的 Id 設定。

    重要

    此參數已棄用,可能會在未來版本中移除。請改用 HostName 參數。

  • 只有明確要求此節點 ID 的連線才能給出此節點的節點 ID。要求 任何 節點 ID 的管理伺服器無法使用此 ID。當在同一主機上執行多個管理伺服器,且 HostName 不足以區分處理程序時,可以使用此參數。適用於測試用途。

  • HostName

    版本(或更新版本) NDB
    類型或單位 名稱或 IP 位址
    預設 [...]
    範圍 ...
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    指定此參數會定義 SQL 節點 (API 節點) 要駐留的電腦主機名稱。使用 HostName 來指定 localhost 以外的主機名稱。

    如果 config.ini 檔案的給定 [mysql][api] 區段中未指定 HostName,則 SQL 或 API 節點可以使用任何可以與管理伺服器主機電腦建立網路連線的主機的對應 插槽 連線。這與資料節點的預設行為不同,資料節點會假設 HostNamelocalhost,除非另有指定

  • LocationDomainId

    版本(或更新版本) NDB
    類型或單位 整數
    預設 0
    範圍 0 - 16
    重新啟動類型

    系統重新啟動:需要完全關閉並重新啟動叢集。

    將 SQL 或其他 API 節點指派給雲端內的特定可用性網域(也稱為可用性區域)。透過通知 NDB 哪些節點位於哪些可用性網域中,可以在雲端環境中透過以下方式來改善效能

    • 如果在同一節點上找不到要求的資料,則可以將讀取導向到同一可用性網域中的另一個節點。

    • 不同可用性網域中節點之間的通訊保證會使用 NDB 傳輸器的 WAN 支援,而無需任何進一步的手動干預。

    • 傳輸器的群組號碼可以根據使用的可用性網域來設定,以便 SQL 和其他 API 節點也盡可能與同一可用性網域中的本機資料節點通訊。

    • 仲裁器可以從沒有資料節點存在的可用性網域中選取,或者,如果找不到此類可用性網域,則從第三個可用性網域中選取。

    LocationDomainId 接受介於 0 到 16(含)之間的整數值,其中 0 為預設值;使用 0 與將參數保留為未設定相同。

  • ArbitrationRank

    版本(或更新版本) NDB
    類型或單位 0-2
    預設 0
    範圍 0 - 2
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    此參數定義哪些節點可以充當仲裁器。管理節點和 SQL 節點都可以是仲裁器。值 0 表示永遠不會使用給定節點作為仲裁器,值 1 表示節點具有作為仲裁器的高優先順序,值 2 表示節點具有低優先順序。一般組態會使用管理伺服器作為仲裁器,將其 ArbitrationRank 設定為 1(管理節點的預設值),並將所有 SQL 節點的值設定為 0(SQL 節點的預設值)。

    將所有管理節點和 SQL 節點上的 ArbitrationRank 設定為 0,即可完全停用仲裁。您也可以覆寫此參數來控制仲裁;若要這麼做,請在 config.ini 全域組態檔案的 [ndbd default] 區段中設定 Arbitration 參數。

  • ArbitrationDelay

    版本(或更新版本) NDB
    類型或單位 毫秒
    預設 0
    範圍 0 - 4294967039 (0xFFFFFEFF)
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    將此參數設定為 0 (預設值) 以外的任何其他值,表示仲裁器對仲裁請求的回應將延遲指定的毫秒數。通常不需要變更此值。

  • BatchByteSize

    版本(或更新版本) NDB
    類型或單位 位元組
    預設 16K
    範圍 1K - 1M
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    對於轉換為完整資料表掃描或索引範圍掃描的查詢,為了獲得最佳效能,以適當大小的批次提取記錄非常重要。可以在記錄數量 (BatchSize) 和位元組 (BatchByteSize) 方面設定適當的大小。實際的批次大小受兩個參數的限制。

    查詢的執行速度可能會因這個參數的設定方式而有超過 40% 的差異。

    這個參數的單位是位元組。預設值為 16K。

  • BatchSize

    版本(或更新版本) NDB
    類型或單位 記錄
    預設 256
    範圍 1 - 992
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    這個參數的單位是記錄數量,預設設定為 256。最大大小為 992。

  • ExtraSendBufferMemory

    版本(或更新版本) NDB
    類型或單位 位元組
    預設 0
    範圍 0 - 4294967039 (0xFFFFFEFF)
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    這個參數指定要配置的傳輸器傳送緩衝區記憶體量,除了使用 TotalSendBufferMemorySendBufferMemory 或兩者設定的任何記憶體之外。

  • HeartbeatThreadPriority

    版本(或更新版本) NDB
    類型或單位 字串
    預設 [...]
    範圍 ...
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    使用此參數設定管理節點和 API 節點的心跳執行緒的排程原則和優先順序。設定此參數的語法如下所示

    HeartbeatThreadPriority = policy[, priority]
    
    policy:
      {FIFO | RR}

    設定此參數時,您必須指定一個原則。這是 FIFO (先進先出) 或 RR (循環配置)。後面可選擇性地跟著優先順序 (整數)。

  • MaxScanBatchSize

    版本(或更新版本) NDB
    類型或單位 位元組
    預設 256K
    範圍 32K - 16M
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    批次大小是每個資料節點傳送的每個批次的大小。大多數掃描都是平行執行,以防止 MySQL 伺服器從多個節點平行接收過多資料;此參數設定所有節點的總批次大小的限制。

    這個參數的預設值設定為 256KB。其最大大小為 16MB。

  • TotalSendBufferMemory

    版本(或更新版本) NDB
    類型或單位 位元組
    預設 0
    範圍 256K - 4294967039 (0xFFFFFEFF)
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    這個參數用於決定在這個節點上為所有已配置的傳輸器之間的共用傳送緩衝區記憶體配置的總記憶體量。

    如果設定此參數,則其允許的最小值為 256KB;0 表示尚未設定該參數。如需更詳細的資訊,請參閱 第 25.4.3.14 節,「設定 NDB Cluster 傳送緩衝區參數」

  • AutoReconnect

    版本(或更新版本) NDB
    類型或單位 布林值
    預設 false
    範圍 true, false
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    預設情況下,此參數為 false。這會強制已中斷連線的 API 節點 (包括作為 SQL 節點的 MySQL 伺服器) 使用與叢集的新連線,而不是嘗試重複使用現有的連線,因為重複使用連線在使用動態配置的節點 ID 時可能會導致問題。(Bug #45921)

    注意

    可以使用 NDB API 覆寫此參數。如需更多資訊,請參閱 Ndb_cluster_connection::set_auto_reconnect()Ndb_cluster_connection::get_auto_reconnect()

  • DefaultOperationRedoProblemAction

    版本(或更新版本) NDB
    類型或單位 列舉
    預設 QUEUE
    範圍 ABORT, QUEUE
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    這個參數 (以及 RedoOverCommitLimitRedoOverCommitCounter) 控制資料節點在將重做記錄刷新到磁碟時花費太多時間時,如何處理作業。當給定的重做記錄刷新花費的時間超過 RedoOverCommitLimit 秒,次數超過 RedoOverCommitCounter 次時,就會發生這種情況,導致任何擱置的交易中止。

    當發生這種情況時,節點可以根據 DefaultOperationRedoProblemAction 的值,以兩種方式之一回應,如下所列

    • ABORT:來自中止交易的任何擱置作業也會中止。

    • QUEUE:來自中止交易的擱置作業會排入佇列以重新嘗試。這是預設值。當重做記錄空間不足時,擱置作業仍會中止,也就是說,當發生 P_TAIL_PROBLEM 錯誤時。

  • DefaultHashMapSize

    版本(或更新版本) NDB
    類型或單位 儲存區
    預設 3840
    範圍 0 - 3840
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    使用此參數可以設定 NDB 使用的資料表雜湊圖的大小。DefaultHashMapSize 可以採用三種可能的值 (0、240、3840)。下表說明這些值及其效果。

    表 25.16 DefaultHashMapSize 參數值

    描述/效果
    0 使用叢集中所有資料節點和 API 節點的這個參數設定的最低值 (如果有的話);如果未在任何資料或 API 節點上設定,則使用預設值。
    240 舊的預設雜湊圖大小
    3840 NDB 9.0 中預設使用的雜湊圖大小

    此參數的最初預期用途是為了方便升級和降級至較舊的 NDB Cluster 版本和從較舊的 NDB Cluster 版本升級和降級,因為雜湊圖大小不同,而且這個變更並非向後相容。

  • Wan

    版本(或更新版本) NDB
    類型或單位 布林值
    預設 false
    範圍 true, false
    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    使用 WAN TCP 設定作為預設值。

  • ConnectBackoffMaxTime

    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    在具有許多未啟動資料節點的 NDB Cluster 中,可以提高這個參數的值,以規避與尚未開始在叢集中運作的資料節點連線的嘗試,並調節管理節點的高流量。只要 API 節點未連線至任何新的資料節點,就會套用 StartConnectBackoffMaxTime 參數的值;否則,會使用 ConnectBackoffMaxTime 來決定嘗試連線之間要等待的毫秒時間長度。

    計算此參數的經過時間時,不考慮 節點連線嘗試期間經過的時間。逾時是以大約 100 毫秒的解析度套用,從 100 毫秒的延遲開始;對於每個後續嘗試,此期間的長度會加倍,直到達到 ConnectBackoffMaxTime 毫秒,最多為 100000 毫秒 (100 秒)。

    一旦 API 節點連線至資料節點,且該節點 (在心跳訊息中) 報告其已連線至其他資料節點,則嘗試與這些資料節點的連線不再受此參數影響,並且之後每 100 毫秒進行一次,直到連線為止。資料節點啟動後,API 節點可能需要長達 HeartbeatIntervalDbApi 的時間才能收到此訊息。

  • StartConnectBackoffMaxTime

    重新啟動類型

    節點重新啟動:需要叢集的滾動重新啟動

    在具有許多未啟動資料節點的 NDB Cluster 中,可以提高這個參數的值,以規避與尚未開始在叢集中運作的資料節點連線的嘗試,並調節管理節點的高流量。只要 API 節點未連線至任何新的資料節點,就會套用 StartConnectBackoffMaxTime 參數的值;否則,會使用 ConnectBackoffMaxTime 來決定嘗試連線之間要等待的毫秒時間長度。

    計算此參數的經過時間時,不考慮 節點連線嘗試期間經過的時間。逾時是以大約 100 毫秒的解析度套用,從 100 毫秒的延遲開始;對於每個後續嘗試,此期間的長度會加倍,直到達到 StartConnectBackoffMaxTime 毫秒,最多為 100000 毫秒 (100 秒)。

    一旦 API 節點連線至資料節點,且該節點 (在心跳訊息中) 報告其已連線至其他資料節點,則嘗試與這些資料節點的連線不再受此參數影響,並且之後每 100 毫秒進行一次,直到連線為止。資料節點啟動後,API 節點可能需要長達 HeartbeatIntervalDbApi 的時間才能收到此訊息。

API 節點除錯參數。 您可以使用 ApiVerbose 組態參數,從給定的 API 節點啟用除錯輸出。此參數採用整數值。0 是預設值,並會停用此類除錯;1 會啟用叢集記錄的除錯輸出;2 會加入 DBDICT 除錯輸出。(Bug #20638450) 另請參閱 DUMP 1229

您也可以使用 SHOW STATUSmysql 用戶端中,從作為 NDB Cluster 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 Cluster 狀態變數」

注意

若要將新的 SQL 或 API 節點新增至正在執行的 NDB Cluster 的組態中,必須在將新的 [mysqld][api] 區段新增至 config.ini 檔案 (或多個檔案,如果您使用多個管理伺服器) 之後,執行所有叢集節點的滾動重新啟動。必須先完成此操作,新的 SQL 或 API 節點才能連線至叢集。

如果新的 SQL 或 API 節點可以使用叢集組態中先前未使用的 API 插槽連線至叢集,則不必執行叢集的任何重新啟動。

重新啟動類型。下表顯示本節中參數描述所使用的重新啟動類型資訊

表 25.17 NDB Cluster 重新啟動類型

符號 重新啟動類型 描述
N 節點 可以使用滾動重新啟動更新參數 (請參閱 第 25.6.5 節,「執行 NDB Cluster 的滾動重新啟動」)
S 系統 所有叢集節點都必須完全關閉,然後重新啟動,才能生效此參數的變更
I 初始 資料節點必須使用 --initial 選項重新啟動。