MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

23.3.3.12 NDB Cluster の共有メモリー接続

NDB クラスタノード間の通信は通常、TCP/IP を使用して処理されます。 共有メモリー (SHM) トランスポータは、ソケット上ではなくメモリー内に書き込むことによってシグナルが送信されるという事実によって区別されます。 共有メモリートランスポータ (SHM) は、同じホスト上で API ノード (通常は SQL ノード) とデータノードを同時に実行するときに TCP 接続に必要なオーバーヘッドの最大 20% を軽減することで、パフォーマンスを向上させることができます。 共有メモリー接続は、次の 2 つの方法のいずれかで有効にできます:

クラスタが、ノード 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 接続のチューニングを実行できます:

この例は、NDB Cluster 内の複数のホストに SHM 接続が定義されている単純な設定を示しています。ここにリストされている 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]セクションで設定されます。これらは、1 つ以上の[shm]セクションで接続ごとにオーバーライドできます。 このような各セクションは、NodeId1 および NodeId2 を使用して特定の SHM 接続に関連付ける必要があります。これらのパラメータに必要な値は、トランスポータによって接続された 2 つのノードのノード ID です。 HostName1 および HostName2 を使用してホスト名でノードを識別することもできますが、これらのパラメータは必須ではありません。

ホスト名が設定されていない API ノードは、TCP トランスポータを使用して、起動されたホストから独立したデータノードと通信します。構成ファイルの[tcp default]セクションで設定されたパラメータと値は、クラスタ内のすべての TCP トランスポータに適用されます。

最適なパフォーマンスを得るために、SHM トランスポータ (ShmSpinTime パラメータ) のスピン時間を定義できます。これは、NDB のデータノード受信側スレッドとポーリング所有者 (受信スレッドまたはユーザースレッド) の両方に影響します。

再起動のタイプ.  このセクションのパラメータの説明で使用される再起動タイプに関する情報を次のテーブルに示します:

表 23.22 NDB Cluster の再起動タイプ

シンボル 再起動タイプ 説明
N ノード パラメータはローリング再起動を使用して更新できます (セクション23.5.5「NDB Cluster のローリング再起動の実行」 を参照)
S システム このパラメータの変更を有効にするには、すべてのクラスタノードを完全に停止してから再起動する必要があります
I Initial --initial オプションを使用してデータノードを再起動する必要があります