21.5.14.44 ndbinfo 传输器 table

下 table 包含有关 NDB 传输器的信息。

transporterstable 包含以下列:

  • 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

自连接以来,此运输工具已进入减速状态的次数

Notes

对于集群中的每个运行数据节点,transporterstable 显示一行,该行显示该节点与集群中所有节点(包括自身)的连接状态。该信息显示在 table 的 status *列中,该列可以具有以下任一值:CONNECTINGCONNECTEDDISCONNECTINGDISCONNECTED

状态为DISCONNECTED的是已配置但当前未连接到集群的与 API 和 Management 节点的连接。该 table 中未显示node_id是当前未连接的数据节点的行。 (这与ndbinfo.nodestable 中未连接节点的相似删除。

remote_address是其 ID 显示在remote_node_id列中的节点的主机名或地址。从此节点发出的bytes_sent和从此节点发出的bytes_received分别是自构建以来该节点使用此连接发送和接收的字节数。对于状态为CONNECTINGDISCONNECTED的节点,这些列始终显示0

假设您有一个由 2 个数据节点,2 个 SQL 节点和 1 个 Management 节点组成的 5 节点群集,如ndb_mgmClient 端中SHOW命令的输出所示:

ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=1    @10.100.10.1  (5.7.31-ndb-7.6.16, Nodegroup: 0, *)
id=2    @10.100.10.2  (5.7.31-ndb-7.6.16, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=10   @10.100.10.10  (5.7.31-ndb-7.6.16)

[mysqld(API)]   2 node(s)
id=20   @10.100.10.20  (5.7.31-ndb-7.6.16)
id=21   @10.100.10.21  (5.7.31-ndb-7.6.16)

假设所有数据节点都在运行,则transporterstable 中有 10 行-第一个数据节点为 5 行,第二个数据节点为 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_mgmClient 端中使用命令2 STOP关闭了该集群中的一个数据节点,然后重复了上一个查询(再次使用mysqlClient 端),则此 table 现在仅显示 5 行,其余连接的每个连接为 1 行 Management 节点到另一个节点,包括自身和当前处于脱机状态的数据节点,并显示CONNECTINGtable 示与当前处于脱机状态的数据节点的每个剩余连接的状态,如下所示:

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_countoverloadedoverload_countslowdownslowdown_count计数器在连接时重置,并在远程节点断开连接后保留其值。 bytes_sentbytes_received计数器也会在连接时重置,因此在断开连接后仍保留其值(直到下一次连接将其重置)。

当此传输器的发送缓冲区包含超过OVerloadLimit个字节(默认值为SendBufferMemory的 80%,即 0.8 * 2097152 = 1677721 字节)时,overloadedoverload_count列所指的* overload *状态发生。当给定的传输器处于过载状态时,任何尝试使用此传输器的新事务都会失败,并显示错误 1218(NDB 内核中的发送缓冲区已过载)。这会影响扫描和主键操作。

当传输器的发送缓冲区包含 60%的过载限制(默认情况下等于 0.6 * 2097152 = 1258291 字节)时,将发生此 table 的slowdownslowdown_count列所引用的* slowdown *状态。在这种状态下,使用此运输工具进行的任何新扫描都会减小其批处理大小,以最大程度地减少运输工具上的负载。

发送缓冲区变慢或过载的常见原因包括:

  • 数据大小,尤其是存储在TEXT列或BLOB列(或两种类型的列)中的数据量

  • 与用于二进制日志记录的 SQL 节点在同一主机上具有一个数据节点(ndbd 或 ndbmtd)

  • 每个事务或事务批处理有大量行

  • 配置问题,例如SendBufferMemory不足

  • 硬件问题,例如 RAM 不足或网络连接不良

另请参见第 21.3.3.13 节,“配置 NDB 群集发送缓冲区参数”