文件首頁
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叢集共用記憶體連線

25.4.3.12 NDB叢集共用記憶體連線

NDB叢集節點之間的通訊通常使用TCP/IP處理。共用記憶體 (SHM) 傳輸器的區別在於,訊號是透過寫入記憶體而非通訊端來傳輸。當在同一主機上一起執行API節點 (通常是SQL節點) 和資料節點時,共用記憶體傳輸器 (SHM) 可以減少TCP連線所需高達 20% 的額外負荷,從而提高效能。您可以使用此處列出的兩種方式之一啟用共用記憶體連線

  • 透過將 UseShm 資料節點組態參數設定為 1,並將資料節點的 HostName 和 API 節點的 HostName 設定為相同的值。

  • 透過在叢集組態檔案中使用 [shm] 區段,每個區段都包含 NodeId1NodeId2 的設定。此方法將於本節稍後詳述。

假設叢集正在執行節點 ID 為 1 的資料節點,以及位於 10.0.0.1 同一台主機上的節點 ID 為 51 的 SQL 節點。若要在這兩個節點之間啟用 SHM 連線,只需確保在叢集組態檔案中包含以下項目即可

[ndbd]
NodeId=1
HostName=10.0.0.1
UseShm=1

[mysqld]
NodeId=51
HostName=10.0.0.1
重要

剛才顯示的這兩個項目是叢集需要的任何其他項目和參數設定的附加項目。本節稍後會顯示更完整的範例。

在啟動使用 SHM 連線的資料節點之前,也必須確定每個託管此類資料節點的電腦上的作業系統都已為共用記憶體區段配置足夠的記憶體。請參閱您的作業平台的文件以取得相關資訊。在每個主機都執行資料節點和 API 節點的設定中,可以透過在組態檔案的 [ndbd default] 區段中設定 UseShm 來在所有此類主機上啟用共用記憶體。這將於本節稍後的範例中顯示。

雖然不是嚴格要求,但可以透過在叢集組態 (config.ini) 檔案的 [shm default] 區段中設定下列一或多個參數來完成叢集中所有 SHM 連線的微調

  • ShmSize:共用記憶體大小

  • ShmSpinTime:在進入休眠前旋轉的時間 (以微秒為單位)

  • SendBufferMemory:從此節點傳送之訊號的緩衝區大小,以位元組為單位。

  • SendSignalId:表示每個透過傳輸器傳送的訊號中都包含訊號 ID。

  • Checksum:表示每個透過傳輸器傳送的訊號中都包含檢查總和。

  • PreSendChecksum:在傳送訊號之前檢查檢查總和;必須也啟用檢查總和才能運作

此範例顯示在多個主機上定義 SHM 連線的簡單設定,在 NDB 叢集中使用此處依主機名稱列出的 3 台電腦,託管顯示的節點類型

  1. 10.0.0.0:管理伺服器

  2. 10.0.0.1:資料節點和 SQL 節點

  3. 10.0.0.2:資料節點和 SQL 節點

在此情境中,每個資料節點都使用 TCP 傳輸器與管理伺服器和其他資料節點進行通訊;每個 SQL 節點都使用共用記憶體傳輸器與本機資料節點進行通訊,並使用 TCP 傳輸器與遠端資料節點進行通訊。config.ini 檔案 (其內容在此顯示) 所啟用的基本組態會反映此設定

[ndbd default]
DataDir=/path/to/datadir
UseShm=1

[shm default]
ShmSize=8M
ShmSpintime=200
SendBufferMemory=4M

[tcp default]
SendBufferMemory=8M

[ndb_mgmd]
NodeId=49
Hostname=10.0.0.0
DataDir=/path/to/datadir

[ndbd]
NodeId=1
Hostname=10.0.0.1
DataDir=/path/to/datadir

[ndbd]
NodeId=2
Hostname=10.0.0.2
DataDir=/path/to/datadir

[mysqld]
NodeId=51
Hostname=10.0.0.1

[mysqld]
NodeId=52
Hostname=10.0.0.2

[api]
[api]

影響所有共用記憶體傳輸器的參數都在 [shm default] 區段中設定;這些可以在一或多個 [shm] 區段中根據每個連線來覆寫。每個此類區段都必須使用 NodeId1NodeId2 與指定的 SHM 連線建立關聯;這些參數所需的值是由傳輸器連線的兩個節點的節點 ID。您也可以使用 HostName1HostName2 依主機名稱識別節點,但這些參數不是必要的。

未設定任何主機名稱的 API 節點會使用 TCP 傳輸器與資料節點進行通訊,而不論它們在哪個主機上啟動;組態檔案的 [tcp default] 區段中設定的參數和值會套用至叢集中的所有 TCP 傳輸器。

為了獲得最佳效能,您可以為 SHM 傳輸器定義旋轉時間 (ShmSpinTime 參數);這會影響 NDB 中的資料節點接收器執行緒和輪詢擁有者 (接收執行緒或使用者執行緒)。

  • Checksum

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    此參數是預設為停用的布林值 (Y/N) 參數。啟用時,所有訊息的檢查總和都會在放入傳送緩衝區之前計算。

    此功能可防止訊息在等待傳送緩衝區時損壞。它也可以作為檢查資料在傳輸過程中是否損壞的機制。

  • Group

    版本 (或更新版本) NDB
    類型或單位 不帶正負號的整數
    預設 35
    範圍 0 - 200
    重新啟動類型

    節點重新啟動:需要對叢集進行滾動重新啟動

    決定群組接近度;值較小會被視為較近。預設值足以應付大部分情況。

  • HostName1

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    HostName1HostName2 參數可用於指定要在兩個節點之間用於指定 SHM 連線的特定網路介面。這些參數使用的值可以是主機名稱或 IP 位址。

  • HostName2

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    HostName1HostName2 參數可用於指定要在兩個節點之間用於指定 SHM 連線的特定網路介面。這些參數使用的值可以是主機名稱或 IP 位址。

  • NodeId1

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    若要識別兩個節點之間的連線,有必要為每個節點提供節點識別碼,如 NodeId1NodeId2

  • NodeId2

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    若要識別兩個節點之間的連線,有必要為每個節點提供節點識別碼,如 NodeId1NodeId2

  • NodeIdServer

    版本 (或更新版本) NDB
    類型或單位 數值
    預設 [無]
    範圍 1 - 63
    重新啟動類型

    節點重新啟動:需要對叢集進行滾動重新啟動

    識別共用記憶體連線的伺服器端。預設值是資料節點的節點 ID。

  • OverloadLimit

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    當傳送緩衝區中存在超過此數量的未傳送位元組時,該連線會被視為超載。如需詳細資訊,請參閱第 25.4.3.14 節「設定 NDB 叢集傳送緩衝區參數」第 25.6.17.66 節「ndbinfo transporters 表格」

  • PreSendChecksum

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    如果同時啟用此參數和 Checksum,則會執行傳送前檢查總和檢查,並檢查節點之間的所有 SHM 訊號是否有錯誤。如果 Checksum 也未啟用,則無效。

  • SendBufferMemory

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    使用共用記憶體連線從此節點傳送的訊號的共用記憶體緩衝區大小 (以位元組為單位)。

  • SendSignalId

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    為了追蹤分散式訊息的路徑,有必要為每個訊息提供唯一的識別碼。將此參數設定為 Y 也會使這些訊息 ID 透過網路傳輸。此功能在生產版本中預設為停用,在 -debug 版本中則為啟用。

  • ShmKey

    版本 (或更新版本) NDB
    類型或單位 不帶正負號的整數
    預設 0
    範圍 0 - 4294967039 (0xFFFFFEFF)
    重新啟動類型

    節點重新啟動:需要對叢集進行滾動重新啟動

    當設定共享記憶體區段時,會使用以整數表示的節點 ID 來唯一識別用於通訊的共享記憶體區段。沒有預設值。如果啟用 UseShm,則共享記憶體金鑰會由 NDB 自動計算。

  • ShmSize

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    每個 SHM 連接都有一個共享記憶體區段,傳送者會將節點之間的訊息放置在此區段中,而讀取者則會讀取這些訊息。此區段的大小由 ShmSize 定義。預設值為 4MB。

  • ShmSpinTime

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

    節點重新啟動:需要對叢集進行滾動重新啟動

    接收時,在進入休眠狀態之前等待的時間,以微秒為單位。

  • SigNum

    版本 (或更新版本) NDB
    類型或單位 不帶正負號的整數
    預設 [...]
    範圍 0 - 4294967039 (0xFFFFFEFF)
    已棄用 是(在 NDB 7.6 中)
    重新啟動類型

    節點重新啟動:需要對叢集進行滾動重新啟動

    此參數以前用於覆寫作業系統訊號編號;在 NDB 9.0 中,不再使用它,並且會忽略對它的任何設定。

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

表 25.21 NDB Cluster 重新啟動類型

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