文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  在 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 8.4.0
    類型或單位 無符號
    預設 [...]
    範圍 1 - 255
    重新啟動類型

    初始系統重新啟動:需要完整關閉叢集、從備份清除和還原叢集檔案系統,然後重新啟動叢集。(NDB 8.4.0)

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

    注意

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

    當識別 API 節點時,NodeId 是建議使用的參數名稱。(為了向後相容,仍支援 Id,但現在已棄用,並且在使用時會產生警告。未來也可能會移除。)

  • ConnectionMap

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

    指定要連線的資料節點。

  • NodeId

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

    初始系統重新啟動:需要完整關閉叢集、從備份清除和還原叢集檔案系統,然後重新啟動叢集。(NDB 8.4.0)

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

    注意

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

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

  • ExecuteOnComputer

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

    系統重新啟動:需要完整關閉並重新啟動叢集。(NDB 8.4.0)

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

    重要

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

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

  • HostName

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

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

  • LocationDomainId

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

    系統重新啟動:需要完整關閉並重新啟動叢集。(NDB 8.4.0)

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

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

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

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

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

    LocationDomainId 採用介於 0 到 16 (含) 之間的整數值,預設值為 0;使用 0 與不設定參數相同。

  • ArbitrationRank

    版本(或更新版本) 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 參數。

  • ArbitrationDelay

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

  • BatchByteSize

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

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

    這個參數以位元組為單位測量。預設值為 16K。

  • BatchSize

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

  • ExtraSendBufferMemory

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

  • HeartbeatThreadPriority

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

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

    設定此參數時,您必須指定一個策略。可以是 FIFO(先進先出)或 RR(循環)。後面可以選擇性地加上優先順序(一個整數)。

  • MaxScanBatchSize

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

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

  • TotalSendBufferMemory

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

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

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

  • AutoReconnect

    版本(或更新版本) 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)

    當將重做記錄刷新到磁碟所需的時間過長時,此參數(以及 RedoOverCommitLimitRedoOverCommitCounter)控制資料節點對操作的處理方式。當給定的重做記錄刷新時間超過 RedoOverCommitLimit 秒,超過 RedoOverCommitCounter 次時,會發生這種情況,導致任何待處理的交易中止。

    發生這種情況時,節點可以根據 DefaultOperationRedoProblemAction 的值,以兩種方式中的任何一種方式回應,如下所示

    • ABORT:來自中止交易的任何待處理操作也會中止。

    • QUEUE:來自中止交易的待處理操作會排隊等待重試。這是預設值。當重做記錄空間不足時,待處理的操作仍會中止,也就是說,當發生 P_TAIL_PROBLEM 錯誤時。

  • DefaultHashMapSize

    版本(或更新版本) 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 叢集版本,由於此變更並非向後相容,因此雜湊對應大小有所不同。

  • Wan

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

    節點重新啟動:需要叢集的滾動重新啟動。(NDB 8.4.0)

    將 WAN TCP 設定作為預設值。

  • ConnectBackoffMaxTime

    版本(或更新版本) 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 的時間才能收到已發生此情況的通知。

  • StartConnectBackoffMaxTime

    版本(或更新版本) 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 選項重新啟動資料節點