该表包含有关 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
、、、
或。
CONNECTED
DISCONNECTING
DISCONNECTED
与已配置但当前未连接到集群的 API 和管理节点的连接显示为 status
DISCONNECTED
。node_id
该表中未显示当前未连接的数据节点的行
。(这与表中断开连接的节点类似
ndbinfo.nodes
。
remote_address
是 ID 显示在
remote_node_id
列中的节点
的主机名或地址。bytes_sent
from this node 和
bytes_received
by 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_count
、
overloaded
、
和计数器在连接时重置,并在远程节点断开连接后保留其值overload_count
。和计数器也在连接时重置,因此在断开连接后保留它们的值(直到下一个连接重置它们)
。
slowdown
slowdown_count
bytes_sent
bytes_received
当此传输器的发送缓冲区包含超过
字节(默认为 的 80%
,即 0.8 * 2097152 = 1677721 字节)时,就会出现和
列所指
的过载状态。当给定的传输器处于过载状态时,任何尝试使用此传输器的新事务都会失败,并显示错误 1218(发送缓冲区在 NDB 内核中过载)。这会影响扫描和主键操作。
overloaded
overload_count
OVerloadLimit
SendBufferMemory
当传输器的发送缓冲区包含超过 60% 的过载限制(默认情况下等于 0.6 * 2097152 = 1258291 字节)时,就会出现此表的和
列引用
的减速状态。在这种状态下,任何使用此传输器的新扫描都会减少其批量大小,以最大限度地减少传输器上的负载。
slowdown
slowdown_count
发送缓冲区变慢或过载的常见原因包括:
在与从事二进制日志记录的 SQL 节点相同的主机上具有数据节点(ndbd 或 ndbmtd)
每个交易或交易批次的大量行
配置不足等问题
SendBufferMemory
内存不足或网络连接不良等硬件问题