该表包含 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
该传输器自连接以来进入减速状态的次数
-
encrypted
如果该传输器使用 TLS 连接,则该列为
1
0
。
注意
对于集群中的每个正在运行的数据节点,该
transporters
表显示该节点与集群中所有节点的连接状态,包括自己。该信息显示在表的 status 列中,该列可以具有以下值:CONNECTING
、CONNECTED
、DISCONNECTING
或 DISCONNECTED
。
配置但未连接到集群的 API 和管理节点的连接显示状态为
DISCONNECTED
。该表中不显示未连接的数据节点的行。(这与 ndbinfo.nodes
表中未显示断开连接的节点类似。
该
remote_address
是远程节点的主机名或地址,该节点的 ID 显示在 remote_node_id
列中。该节点使用该连接发送的字节数和接收的字节数分别显示在 bytes_sent
和 bytes_received
列中。对于状态为 CONNECTING
或 DISCONNECTED
的节点,这些列总是显示 0
。
假设您有一个 5 节点集群,包括 2 个数据节点、2 个 SQL 节点和 1 个管理节点,如
SHOW
命令在 ndb_mgm 客户端中的输出所示:
ndb_mgm> SHOW
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @10.100.10.1 (8.1.0-ndb-8.1.0, Nodegroup: 0, *)
id=2 @10.100.10.2 (8.1.0-ndb-8.1.0, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=10 @10.100.10.10 (8.1.0-ndb-8.1.0)
[mysqld(API)] 2 node(s)
id=20 @10.100.10.20 (8.1.0-ndb-8.1.0)
id=21 @10.100.10.21 (8.1.0-ndb-8.1.0)
该
transporters
表中有 10 行—5 行来自第一个数据节点,5 行来自第二个数据节点—假设所有数据节点都在运行,如下所示:
+---------+----------------+------------+----------------+------------+----------------+---------------+------------+----------------+----------+----------------+-----------+
| node_id | remote_node_id | status | remote_address | bytes_sent | bytes_received | connect_count | overloaded | overload_count | slowdown | slowdown_count | encrypted |
+---------+----------------+------------+----------------+------------+----------------+---------------+------------+----------------+----------+----------------+-----------+
| 5 | 6 | CONNECTED | 127.0.0.1 | 15509748 | 15558204 | 1 | 0 | 0 | 0 | 0 | 0 |
| 5 | 50 | CONNECTED | 127.0.0.1 | 1058220 | 284316 | 1 | 0 | 0 | 0 | 0 | 0 |
| 5 | 100 | CONNECTED | 127.0.0.1 | 574796 | 402208 | 1 | 0 | 0 | 0 | 0 | 0 |
| 5 | 101 | CONNECTING | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 6 | 5 | CONNECTED | 127.0.0.1 | 15558204 | 15509748 | 1 | 0 | 0 | 0 | 0 | 0 |
| 6 | 50 | CONNECTED | 127.0.0.1 | 1054548 | 283812 | 1 | 0 | 0 | 0 | 0 | 0 |
| 6 | 100 | CONNECTED | 127.0.0.1 | 529948 | 397444 | 1 | 0 | 0 | 0 | 0 | 0 |
| 6 | 101 | CONNECTING | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
+---------+----------------+------------+----------------+------------+----------------+---------------+------------+----------------+----------+----------------+-----------+
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
计数器也在连接时重置,并在断开连接后保留其值(直到下一个连接重置它们)。
超载状态,指的是由 overload 列和 overload_count
列引用的状态,当该传输器的发送缓冲区包含超过 OVerloadLimit
字节(默认为 SendBufferMemory
的 80%,即 0.8 * 2097152 = 1677721 字节)时。 当某个传输器处于超载状态时,任何尝试使用该传输器的新事务将失败,错误代码为 1218 (NDB 内核中的发送缓冲区超载)。这将影响扫描和主键操作。
慢速状态,指的是由 slowdown 列和 slowdown_count
列引用的状态,当传输器的发送缓冲区包含超过 60% 的超载限制(默认为 0.6 * 2097152 = 1258291 字节)时。在这种状态下,使用该传输器的任何新扫描将其批处理大小减少,以减少对传输器的负载。
发送缓冲区慢速或超载的常见原因包括以下几点:
-
在同一主机上运行数据节点(ndbd 或 ndbmtd)和参与二进制日志记录的 SQL 节点
-
每个事务或事务批处理中的行数较大
-
配置问题,例如
SendBufferMemory
不足 -
硬件问题,例如 RAM 不足或网络连接不良
另请参阅 第 25.4.3.14 节,“配置 NDB 集群发送缓冲区参数”。
如果使用 TLS 连接,该 encrypted
列的值为 1
,如下所示:
mysql> SELECT node_id, remote_node_id, status, encrypted
-> FROM ndbinfo.transporters;
+---------+----------------+------------+-----------+
| node_id | remote_node_id | status | encrypted |
+---------+----------------+------------+-----------+
| 5 | 6 | CONNECTED | 1 |
| 5 | 50 | CONNECTED | 1 |
| 5 | 100 | CONNECTED | 1 |
| 5 | 101 | CONNECTING | 0 |
| 6 | 5 | CONNECTED | 1 |
| 6 | 50 | CONNECTED | 1 |
| 6 | 100 | CONNECTED | 1 |
| 6 | 101 | CONNECTING | 0 |
+---------+----------------+------------+-----------+
8 rows in set (0.04 sec)
否则,该列的值为 0
。
可以使用 certificates
表来获取每个使用链接加密连接的节点的证书信息。
该 encrypted
列是在 NDB 8.3.0 中添加的。
有关更多信息,请参阅 第 25.6.15 节,“NDB 集群的 TLS 链接加密”。