25.6.17.66 NDB 信息transporters 表
该表包含了 NDB 运输器的信息。关于单个运输器的类似信息,请参阅transporter_ details
表。
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 连接 transporter,这个列显示为
1
,否则显示为0
。
对于集群中的每个运行数据节点,该表显示一个行,展示该节点与集群中所有节点的连接状态,包括自身。这项信息在表的 status 列中显示,可以具有以下值之一:CONNECTING
、CONNECTED
、DISCONNECTING
或 DISCONNECTED
。
配置了 API 和管理节点但当前未连接到集群的连接显示为 DISCONNECTED
。表中不包含当前未连接的数据节点的行(该行为类似于 ndbinfo.nodes
表中的 disconnected 节点排除)。
remote_address
是显示在 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 (using cleartext)
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @10.100.10.1 (8.4.0-ndb-8.4.0, Nodegroup: 0, *)
id=2 @10.100.10.2 (8.4.0-ndb-8.4.0, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=10 @10.100.10.10 (8.4.0-ndb-8.4.0)
[mysqld(API)] 2 node(s)
id=20 @10.100.10.20 (8.4.0-ndb-8.4.0)
id=21 @10.100.10.21 (8.4.0-ndb-8.4.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行记录—每个连接对应一个节点,包括当前离线的数据节点和管理节点本身—并将当前离线数据节点的连接状态显示为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状态,指由overloaded
和overload_count
列所引用的 transporter的发送缓冲区包含超过OVerloadLimit
字节(默认为SendBufferMemory
的80%,即2097152 * 0.8 = 1677721字节)的情况。在给定的transporter处于overload状态时,任何尝试使用该transporter的事务都将失败,错误代码1218(NDB kernel中的Send Buffers overloaded)。这影响扫描和主键操作。
slowdown状态,指由slowdown
和slowdown_ count
列所引用的 transporter的发送缓冲区包含超过60%的overload limit(默认为2097152 * 0.6 = 1258291字节)的情况。在这种状态下,使用该transporter的任何新扫描都将其批处理大小减少,以最小化对transporter的负载。
发送缓冲区 slowdown 或 overload 的常见原因包括以下几点:
请参见第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
表获取每个使用链路加密连接的节点证书信息
更多信息,请参见第25.6.15节,“NDB 集群链路加密”