Documentation Home

21.6.15.44 ndbinfo 传输表

该表包含有关 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表显示一行,显示每个节点与集群中所有节点(包括它自己)的连接状态。此信息显示在表的 状态列中,该列可以具有以下任一值:CONNECTING、、、 或。 CONNECTEDDISCONNECTINGDISCONNECTED

与已配置但当前未连接到集群的 API 和管理节点的连接显示为 status DISCONNECTEDnode_id该表中未显示当前未连接的数据节点的行 。(这与表中断开连接的节点类似 ndbinfo.nodes

remote_address是 ID 显示在 remote_node_id列中的节点 的主机名或地址。bytes_sentfrom this node 和 bytes_receivedby this node 分别是该节点自建立以来使用该连接发送和接收的字节数。 对于状态为 CONNECTING或 的节点DISCONNECTED,这些列始终显示 0

假设您有一个由 2 个数据节点、2 个 SQL 节点和 1 个管理节点组成的 5 节点集群,如 ndb_mgmSHOW客户端中命令 的输出所示:

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.40-ndb-7.6.25, Nodegroup: 0, *)
id=2    @10.100.10.2  (5.7.40-ndb-7.6.25, Nodegroup: 0)

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

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

表中有 10 行transporters ——第一个数据节点 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_mgm2 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_countoverloaded、 和计数器在连接时重置,并在远程节点断开连接后保留其值overload_count。和计数器也在连接时重置,因此在断开连接后保留它们的值(直到下一个连接重置它们) 。 slowdownslowdown_countbytes_sentbytes_received

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

当传输器的发送缓冲区包含超过 60% 的过载限制(默认情况下等于 0.6 * 2097152 = 1258291 字节)时,就会出现此表的和 列引用 的减速状态。在这种状态下,任何使用此传输器的新扫描都会减少其批量大小,以最大限度地减少传输器上的负载。 slowdownslowdown_count

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

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

  • 在与从事二进制日志记录的 SQL 节点相同的主机上具有数据节点(ndbd 或 ndbmtd)

  • 每个交易或交易批次的大量行

  • 配置不足等问题 SendBufferMemory

  • 内存不足或网络连接不良等硬件问题

另见第 21.4.3.13 节,“配置 NDB Cluster 发送缓冲区参数”