此表包含有关 NDB 传输器的信息。有关各个传输器的类似信息,请参阅 transporter_details
表。
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
。此表中不显示 node_id
为当前未连接的数据节点的那些行。(这类似于 ndbinfo.nodes
表中对已断开连接的节点的省略。
remote_address
是节点的主机名或地址,其 ID 显示在 remote_node_id
列中。此节点的 bytes_sent
和此节点的 bytes_received
分别是自建立连接以来使用此连接发送和接收的字节数。对于状态为 CONNECTING
或 DISCONNECTED
的节点,这些列始终显示 0
。
假设您有一个由 2 个数据节点、2 个 SQL 节点和 1 个管理节点组成的 5 节点集群,如 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 行,每个剩余管理节点到另一个节点(包括其自身和当前脱机的数据节点)的每个连接显示 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
计数器也在连接时重置,因此在断开连接后保留其值(直到下一个连接重置它们)。
当此传输器的发送缓冲区包含超过 OVerloadLimit
字节(默认值为 SendBufferMemory
的 80%,即 0.8 * 2097152 = 1677721 字节)时,就会出现 overloaded
和 overload_count
列所指的 过载 状态。当给定传输器处于过载状态时,任何尝试使用此传输器的新事务都会失败,并显示错误 1218(NDB 内核中的发送缓冲区过载)。这会影响扫描和主键操作。
当传输器的发送缓冲区包含超过过载限制的 60%(默认情况下等于 0.6 * 2097152 = 1258291 字节)时,就会出现此表的 slowdown
和 slowdown_count
列所引用的 减速 状态。在这种状态下,任何使用此传输器的新扫描都会缩减其批处理大小,以最大程度地减少传输器上的负载。
发送缓冲区减速或过载的常见原因包括以下几点:
在与正在进行二进制日志记录的 SQL 节点相同的 hosts 上具有数据节点(ndbd 或 ndbmtd)
每个事务或事务批处理的行数过多
配置问题,例如
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
表可用于获取有关使用链路加密连接的每个节点的证书信息。
有关更多信息,请参阅 第 25.6.15 节“NDB 集群的 TLS 链路加密”。