NDB クラスタノード間の通信は通常、TCP/IP を使用して処理されます。 共有メモリー (SHM) トランスポータは、ソケット上ではなくメモリー内に書き込むことによってシグナルが送信されるという事実によって区別されます。 共有メモリートランスポータ (SHM) は、同じホスト上で API ノード (通常は SQL ノード) とデータノードを同時に実行するときに TCP 接続に必要なオーバーヘッドの最大 20% を軽減することで、パフォーマンスを向上させることができます。 共有メモリー接続は、次の 2 つの方法のいずれかで有効にできます:
UseShm
データノード構成パラメータを1
に設定し、データノードにはHostName
、API ノードにはHostName
を同じ値に設定します。クラスタ構成ファイルの
[shm]
セクションを使用することで、それぞれにNodeId1
およびNodeId2
の設定が含まれます。 このメソッドの詳細は、このセクションの後半で説明します。
クラスタが、ノード ID 1 を持つデータノードと、10.0.0.1 の同じホストコンピュータ上にノード ID 51 を持つ SQL ノードを実行しているとします。 これら 2 つのノード間の SHM 接続を有効にするには、次のエントリがクラスタ構成ファイルに含まれていることを確認する必要があります:
[ndbd]
NodeId=1
HostName=10.0.0.1
UseShm=1
[mysqld]
NodeId=51
HostName=10.0.0.1
ここで示した 2 つのエントリは、クラスタで必要な他のエントリおよびパラメータ設定に追加されています。 より完全な例は、このセクションの後半で示します。
SHM
接続を使用するデータノードを起動する前に、そのようなデータノードをホストする各コンピュータ上のオペレーティングシステムに、共有メモリーセグメントに十分なメモリーが割り当てられていることも確認する必要があります。
詳細は、ご使用のオペレーティングプラットフォームのドキュメントを参照してください。
複数のホストがそれぞれデータノードと API
ノードを実行している設定では、構成ファイルの[ndbd
default]
セクションで UseShm
を設定することによって、このようなすべてのホストで共有メモリーを有効にできます。
これをこのセクションの後半の例に示します。
厳密には必要ありませんが、クラスタ構成
(config.ini
) ファイルの[shm
default]
セクションで次のパラメータのいずれかまたは複数を設定することで、クラスタ内のすべての
SHM 接続のチューニングを実行できます:
ShmSize
: 共有メモリーサイズShmSpinTime
: スリープ前にスピンする時間 (秒)SendBufferMemory
: このノードから送信されたシグナルのバッファサイズ (バイト単位)。SendSignalId
: トランスポータを介して送信される各シグナルにシグナル ID が含まれていることを示します。Checksum
: トランスポータを介して送信される各シグナルにチェックサムが含まれることを示します。PreSendChecksum
: チェックサムのチェックはシグナルの送信前に行われます。これが機能するにはチェックサムも有効にする必要があります
この例は、NDB Cluster 内の複数のホストに SHM 接続が定義されている単純な設定を示しています。ここにリストされている 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]
セクションで設定されます。これらは、1
つ以上の[shm]
セクションで接続ごとにオーバーライドできます。
このような各セクションは、NodeId1
および NodeId2
を使用して特定の SHM
接続に関連付ける必要があります。これらのパラメータに必要な値は、トランスポータによって接続された
2 つのノードのノード ID です。
HostName1
および
HostName2
を使用してホスト名でノードを識別することもできますが、これらのパラメータは必須ではありません。
ホスト名が設定されていない API ノードは、TCP
トランスポータを使用して、起動されたホストから独立したデータノードと通信します。構成ファイルの[tcp
default]
セクションで設定されたパラメータと値は、クラスタ内のすべての
TCP トランスポータに適用されます。
最適なパフォーマンスを得るために、SHM
トランスポータ
(ShmSpinTime
パラメータ)
のスピン時間を定義できます。これは、NDB
のデータノード受信側スレッドとポーリング所有者
(受信スレッドまたはユーザースレッド)
の両方に影響します。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 boolean デフォルト true 範囲 true, false 再起動タイプ N (NDB 8.0.13)
このパラメータはブール (
Y
/N
) パラメータであり、デフォルトで無効になっています。 有効にすると、送信バッファーに配置される前にすべてのメッセージのチェックサムが計算されます。この機能によって、送信バッファーで待機中のメッセージの破損が回避されます。 これは、トランスポート時のデータ破損に対するチェックとしても機能します。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 unsigned デフォルト 35 範囲 0 - 200 再起動タイプ N (NDB 8.0.13)
グループの近接度を決定します。小さい値は近いと解釈されます。 ほとんどの場合、デフォルト値で十分です。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 name or IP address デフォルト [...] 範囲 ... 再起動タイプ N (NDB 8.0.13)
HostName1
およびHostName2
パラメータを使用すると、2 つのノード間の特定の SHM 接続で使用する特定のネットワークインタフェースを指定できます。 これらのパラメータに使用する値は、ホスト名または IP アドレスです。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 name or IP address デフォルト [...] 範囲 ... 再起動タイプ N (NDB 8.0.13)
HostName1
およびHostName2
パラメータを使用すると、2 つのノード間の特定の SHM 接続で使用する特定のネットワークインタフェースを指定できます。 これらのパラメータに使用する値は、ホスト名または IP アドレスです。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 numeric デフォルト [none] 範囲 1 - 255 再起動タイプ N (NDB 8.0.13)
2 つのノード間の接続を識別するには、各ノードのノード識別子を
NodeId1
およびNodeId2
として指定する必要があります。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 numeric デフォルト [none] 範囲 1 - 255 再起動タイプ N (NDB 8.0.13)
2 つのノード間の接続を識別するには、各ノードのノード識別子を
NodeId1
およびNodeId2
として指定する必要があります。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 numeric デフォルト [none] 範囲 1 - 63 再起動タイプ N (NDB 8.0.13)
共有メモリー接続のサーバー側を識別します。 デフォルトでは、これはデータノードのノード ID です。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 bytes デフォルト 0 範囲 0 - 4294967039 (0xFFFFFEFF) 再起動タイプ N (NDB 8.0.13)
送信バッファーにこれより多くの未送信バイトがあるときは、接続が過負荷状態であるとみなされます。 詳細は、セクション23.3.3.14「NDB Cluster 送信バッファーパラメータの構成」およびセクション23.5.14.55「ndbinfo transporters テーブル」を参照してください。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 boolean デフォルト false 範囲 true, false 再起動タイプ このパラメータと
Checksum
の両方が有効になっている場合は、送信前チェックサムチェックを実行し、ノード間のすべての SHM シグナルにエラーがないかどうかを確認します。Checksum
も有効になっていない場合は、何の効果もありません。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 integer デフォルト 2M 範囲 256K - 4294967039 (0xFFFFFEFF) 再起動タイプ N (NDB 8.0.13)
共有メモリー接続を使用してこのノードから送信されたシグナルの共有メモリーバッファのサイズ (バイト)。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 boolean デフォルト false 範囲 true, false 再起動タイプ N (NDB 8.0.13)
配信されたメッセージの経路をたどるには、各メッセージに一意の識別子を設定する必要があります。 このパラメータを
Y
に設定すると、メッセージ ID もネットワーク経由で転送されるようになります。 この機能は、製品ビルドではデフォルトで無効になっており、-debug
ビルドで有効になります。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 unsigned デフォルト 0 範囲 0 - 4294967039 (0xFFFFFEFF) 再起動タイプ N (NDB 8.0.13)
共有メモリーセグメントを設定するときは、整数で表されるノード ID を使用して、通信に使用する共有メモリーセグメントを一意に識別します。 デフォルト値はありません。
UseShm
が有効な場合、共有メモリーキーはNDB
によって自動的に計算されます。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 bytes デフォルト 4M 範囲 64K - 4294967039 (0xFFFFFEFF) 再起動タイプ N (NDB 8.0.13)
各 SHM 接続には、送信側と読み取り側でノード間のメッセージを配置する共有メモリーセグメントがあります。 このセグメントのサイズは
ShmSize
で定義されます。 デフォルトの値は 4M バイトです。 -
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 integer デフォルト 0 範囲 0 - 2000 再起動タイプ 受信時にスリープ前に待機する時間 (マイクロ秒)。
-
バージョン (またはそれ以降) NDB 8.0.13 タイプまたは単位 unsigned デフォルト [...] 範囲 0 - 4294967039 (0xFFFFFEFF) 非推奨 Yes (in NDB 7.6) 再起動タイプ N (NDB 8.0.13)
このパラメータは以前はオペレーティングシステムのシグナル番号をオーバーライドするために使用されていました。NDB 8.0 では使用されなくなり、その設定は無視されます。
再起動のタイプ. このセクションのパラメータの説明で使用される再起動タイプに関する情報を次のテーブルに示します:
表 23.22 NDB Cluster の再起動タイプ
シンボル | 再起動タイプ | 説明 |
---|---|---|
N | ノード | パラメータはローリング再起動を使用して更新できます (セクション23.5.5「NDB Cluster のローリング再起動の実行」 を参照) |
S | システム | このパラメータの変更を有効にするには、すべてのクラスタノードを完全に停止してから再起動する必要があります |
I | Initial |
--initial
オプションを使用してデータノードを再起動する必要があります |