NDB叢集節點之間的通訊通常使用TCP/IP處理。共用記憶體 (SHM) 傳輸器的區別在於,訊號是透過寫入記憶體而非通訊端來傳輸。當在同一主機上一起執行API節點 (通常是SQL節點) 和資料節點時,共用記憶體傳輸器 (SHM) 可以減少TCP連線所需高達 20% 的額外負荷,從而提高效能。您可以使用此處列出的兩種方式之一啟用共用記憶體連線
假設叢集正在執行節點 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 台電腦,託管顯示的節點類型
10.0.0.0
:管理伺服器10.0.0.1
:資料節點和 SQL 節點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]
區段中根據每個連線來覆寫。每個此類區段都必須使用 NodeId1
和 NodeId2
與指定的 SHM 連線建立關聯;這些參數所需的值是由傳輸器連線的兩個節點的節點 ID。您也可以使用 HostName1
和 HostName2
依主機名稱識別節點,但這些參數不是必要的。
未設定任何主機名稱的 API 節點會使用 TCP 傳輸器與資料節點進行通訊,而不論它們在哪個主機上啟動;組態檔案的 [tcp default]
區段中設定的參數和值會套用至叢集中的所有 TCP 傳輸器。
為了獲得最佳效能,您可以為 SHM 傳輸器定義旋轉時間 (ShmSpinTime
參數);這會影響 NDB
中的資料節點接收器執行緒和輪詢擁有者 (接收執行緒或使用者執行緒)。
-
版本 (或更新版本) NDB 類型或單位 布林值 預設 true 範圍 true,false 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
此參數是預設為停用的布林值 (
Y
/N
) 參數。啟用時,所有訊息的檢查總和都會在放入傳送緩衝區之前計算。此功能可防止訊息在等待傳送緩衝區時損壞。它也可以作為檢查資料在傳輸過程中是否損壞的機制。
-
版本 (或更新版本) NDB 類型或單位 不帶正負號的整數 預設 35 範圍 0 - 200 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
決定群組接近度;值較小會被視為較近。預設值足以應付大部分情況。
-
版本 (或更新版本) NDB 類型或單位 名稱或 IP 位址 預設 [...] 範圍 ... 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
HostName1
和HostName2
參數可用於指定要在兩個節點之間用於指定 SHM 連線的特定網路介面。這些參數使用的值可以是主機名稱或 IP 位址。 -
版本 (或更新版本) NDB 類型或單位 名稱或 IP 位址 預設 [...] 範圍 ... 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
HostName1
和HostName2
參數可用於指定要在兩個節點之間用於指定 SHM 連線的特定網路介面。這些參數使用的值可以是主機名稱或 IP 位址。 -
版本 (或更新版本) NDB 類型或單位 數值 預設 [無] 範圍 1 - 255 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
若要識別兩個節點之間的連線,有必要為每個節點提供節點識別碼,如
NodeId1
和NodeId2
。 -
版本 (或更新版本) NDB 類型或單位 數值 預設 [無] 範圍 1 - 255 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
若要識別兩個節點之間的連線,有必要為每個節點提供節點識別碼,如
NodeId1
和NodeId2
。 -
版本 (或更新版本) NDB 類型或單位 數值 預設 [無] 範圍 1 - 63 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
識別共用記憶體連線的伺服器端。預設值是資料節點的節點 ID。
-
版本 (或更新版本) NDB 類型或單位 位元組 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
當傳送緩衝區中存在超過此數量的未傳送位元組時,該連線會被視為超載。如需詳細資訊,請參閱第 25.4.3.14 節「設定 NDB 叢集傳送緩衝區參數」和第 25.6.17.66 節「ndbinfo transporters 表格」。
-
版本 (或更新版本) NDB 類型或單位 布林值 預設 false 範圍 true,false 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
如果同時啟用此參數和
Checksum
,則會執行傳送前檢查總和檢查,並檢查節點之間的所有 SHM 訊號是否有錯誤。如果Checksum
也未啟用,則無效。 -
版本 (或更新版本) NDB 類型或單位 整數 預設 2M 範圍 256K - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
使用共用記憶體連線從此節點傳送的訊號的共用記憶體緩衝區大小 (以位元組為單位)。
-
版本 (或更新版本) NDB 類型或單位 布林值 預設 false 範圍 true,false 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
為了追蹤分散式訊息的路徑,有必要為每個訊息提供唯一的識別碼。將此參數設定為
Y
也會使這些訊息 ID 透過網路傳輸。此功能在生產版本中預設為停用,在-debug
版本中則為啟用。 -
版本 (或更新版本) NDB 類型或單位 不帶正負號的整數 預設 0 範圍 0 - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
當設定共享記憶體區段時,會使用以整數表示的節點 ID 來唯一識別用於通訊的共享記憶體區段。沒有預設值。如果啟用
UseShm
,則共享記憶體金鑰會由NDB
自動計算。 -
版本 (或更新版本) NDB 類型或單位 位元組 預設 4MB 範圍 64KB - 4294967039 (0xFFFFFEFF) 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
每個 SHM 連接都有一個共享記憶體區段,傳送者會將節點之間的訊息放置在此區段中,而讀取者則會讀取這些訊息。此區段的大小由
ShmSize
定義。預設值為 4MB。 -
版本 (或更新版本) NDB 類型或單位 整數 預設 0 範圍 0 - 2000 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
接收時,在進入休眠狀態之前等待的時間,以微秒為單位。
-
版本 (或更新版本) NDB 類型或單位 不帶正負號的整數 預設 [...] 範圍 0 - 4294967039 (0xFFFFFEFF) 已棄用 是(在 NDB 7.6 中) 重新啟動類型 節點重新啟動:需要對叢集進行滾動重新啟動。
此參數以前用於覆寫作業系統訊號編號;在 NDB 9.0 中,不再使用它,並且會忽略對它的任何設定。
重新啟動類型。 此章節中參數描述所使用的重新啟動類型資訊顯示在下表中。
表 25.21 NDB Cluster 重新啟動類型
符號 | 重新啟動類型 | 描述 |
---|---|---|
N | 節點 | 可以使用滾動重新啟動來更新參數(請參閱第 25.6.5 節,「執行 NDB Cluster 的滾動重新啟動」) |
S | 系統 | 必須完全關閉所有叢集節點,然後重新啟動,才能使此參數的變更生效 |
I | 初始 | 必須使用 --initial 選項重新啟動資料節點 |