このテーブルには、NDB トランスポータに関する情報が格納されます。
transporters
テーブルには、次のカラムがあります:
-
node_id
クラスタ内のこのデータノードの一意のノード ID
-
remote_node_id
リモートデータノードのノード ID
-
status
接続のステータス
-
remote_address
リモートホストの名前または IP アドレス
-
bytes_sent
この接続を使用して送信されたバイト数
-
bytes_received
この接続を使用して受信されたバイト数
-
connect_count
このトランスポータ上で確立された接続の回数
-
overloaded
このトランスポータが現在過負荷状態である場合は 1、それ以外の場合は 0
-
overload_count
このトランスポータが接続してから過負荷状態になった回数
-
slowdown
このトランスポータが低速状態の場合は 1、それ以外の場合は 0
-
slowdown_count
接続以降、このトランスポータが低速状態になった回数
メモ
transporters
テーブルには、クラスタ内で実行中のデータノードごとに、そのノードとクラスタ内のすべてのノード (自分自身を含む) との各接続のステータスを示す行が表示されます。 この情報は、テーブルの status カラムに示されます。このカラムは、CONNECTING
、CONNECTED
、DISCONNECTING
、または DISCONNECTED
のいずれかの値になる可能性があります。
構成されているが、現在はクラスタに接続されていない API および管理ノードへの接続は、DISCONNECTED
のステータスで示されます。 node_id
が、現在接続されていないデータノードの行である場合、このテーブルには表示されません。 (これは、ndbinfo.nodes
テーブルの切断されたノードの省略に似ています。
remote_address
は、remote_node_id
カラムに ID が表示されないノードのホスト名またはアドレスです。 このノードからの bytes_sent
およびこのノードによる bytes_received
はそれぞれ、接続が確立されてから、この接続を使用してノードによって送信されたバイト数と受信されたバイト数です。 ステータスが CONNECTING
または DISCONNECTED
であるノードの場合、これらのカラムには常に 0
が表示されます。
ndb_mgm クライアントの SHOW
コマンドの出力に示されるように、2 つのデータノード、2 つの SQL ノード、および 1 つの管理ノードで構成される 5 ノードクラスタがあると仮定します。
ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @10.100.10.1 (8.0.23-ndb-8.0.23, Nodegroup: 0, *)
id=2 @10.100.10.2 (8.0.23-ndb-8.0.23, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=10 @10.100.10.10 (8.0.23-ndb-8.0.23)
[mysqld(API)] 2 node(s)
id=20 @10.100.10.20 (8.0.23-ndb-8.0.23)
id=21 @10.100.10.21 (8.0.23-ndb-8.0.23)
すべてのデータノードが実行されていると仮定すると、次に示すように、transporters
テーブルには 10 行 (1 番目のデータノード用に 5 行、2 番目のデータノード用に 5 行) が表示されます。
mysql> SELECT node_id, remote_node_id, status
-> FROM ndbinfo.transporters;
+---------+----------------+---------------+
| node_id | remote_node_id | status |
+---------+----------------+---------------+
| 1 | 1 | DISCONNECTED |
| 1 | 2 | CONNECTED |
| 1 | 10 | CONNECTED |
| 1 | 20 | CONNECTED |
| 1 | 21 | CONNECTED |
| 2 | 1 | CONNECTED |
| 2 | 2 | DISCONNECTED |
| 2 | 10 | CONNECTED |
| 2 | 20 | CONNECTED |
| 2 | 21 | CONNECTED |
+---------+----------------+---------------+
10 rows in set (0.04 sec)
ndb_mgm クライアントで 2 STOP
コマンドを使用して、このクラスタ内のデータノードのいずれかをシャットダウンしてから、(再度 mysql クライアントを使用して) 前のクエリーを繰り返すと、次に示すように、このテーブルには、5 行 (残りの管理ノードから別のノードへの接続 (そのデータノード自体と現在オフラインになっているデータノードの両方を含む) ごとに 1 行) のみが表示され、現在オフラインになっているデータノードへの残りの各接続のステータスを表す CONNECTING
が表示されます。
mysql> SELECT node_id, remote_node_id, status
-> FROM ndbinfo.transporters;
+---------+----------------+---------------+
| node_id | remote_node_id | status |
+---------+----------------+---------------+
| 1 | 1 | DISCONNECTED |
| 1 | 2 | CONNECTING |
| 1 | 10 | CONNECTED |
| 1 | 20 | CONNECTED |
| 1 | 21 | CONNECTED |
+---------+----------------+---------------+
5 rows in set (0.02 sec)
connect_count
, overloaded
, overload_count
, slowdown
および slowdown_count
カウンタは接続時にリセットされ、リモートノードが切断された後も値が保持されます。 bytes_sent
および bytes_received
カウンタも接続時にリセットされるため、切断後も値は保持されます (次の接続がリセットされるまで)。
overloaded
カラムおよび overload_count
カラムで参照される過負荷の状態は、このトランスポータの送信バッファに OVerloadLimit
バイトを超える値が含まれている場合に発生します (デフォルトは SendBufferMemory
の 80%、つまり 0.8 * 2097152 = 1677721 バイト)。 特定のトランスポータが過負荷状態にある場合、このトランスポータを使用しようとする新しいトランザクションはエラー 1218 (「NDB カーネルでオーバーロードされたバッファーの送信」) で失敗します。 これは、スキャンと主キー操作の両方に影響します。
このテーブルの slowdown
カラムおよび slowdown_count
カラムによって参照される低速の状態は、トランスポータの送信バッファにオーバーロード制限の 60% を超える値が含まれている場合に発生します (デフォルトでは 0.6*2097152 = 1258291 バイトと等しくなります)。 この状態では、このトランスポータを使用する新しいスキャンのバッチサイズが小さくなり、トランスポータの負荷が最小限に抑えられます。
送信バッファの速度低下またはオーバーロードの一般的な原因は、次のとおりです:
データサイズ。特に、
TEXT
カラムまたはBLOB
カラム (あるいはその両方のタイプのカラム) に格納されるデータの量バイナリロギングに関与する SQL ノードと同じホスト上にデータノード (ndbd または ndbmtd) がある
トランザクションまたはトランザクションバッチ当たりの多数の行
SendBufferMemory
の不足などの構成の問題RAM 不足やネットワーク接続の低下などのハードウェアの問題