21.5.14.44 ndbinfo 传输器 table
下 table 包含有关 NDB 传输器的信息。
transporters
table 包含以下列:
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
自连接以来,此运输工具已进入减速状态的次数
Notes
对于集群中的每个运行数据节点,transporters
table 显示一行,该行显示该节点与集群中所有节点(包括自身)的连接状态。该信息显示在 table 的 status *列中,该列可以具有以下任一值:CONNECTING
,CONNECTED
,DISCONNECTING
或DISCONNECTED
。
状态为DISCONNECTED
的是已配置但当前未连接到集群的与 API 和 Management 节点的连接。该 table 中未显示node_id
是当前未连接的数据节点的行。 (这与ndbinfo.nodestable 中未连接节点的相似删除。
remote_address
是其 ID 显示在remote_node_id
列中的节点的主机名或地址。从此节点发出的bytes_sent
和从此节点发出的bytes_received
分别是自构建以来该节点使用此连接发送和接收的字节数。对于状态为CONNECTING
或DISCONNECTED
的节点,这些列始终显示0
。
假设您有一个由 2 个数据节点,2 个 SQL 节点和 1 个 Management 节点组成的 5 节点群集,如ndb_mgmClient 端中SHOW命令的输出所示:
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.31-ndb-7.6.16, Nodegroup: 0, *)
id=2 @10.100.10.2 (5.7.31-ndb-7.6.16, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=10 @10.100.10.10 (5.7.31-ndb-7.6.16)
[mysqld(API)] 2 node(s)
id=20 @10.100.10.20 (5.7.31-ndb-7.6.16)
id=21 @10.100.10.21 (5.7.31-ndb-7.6.16)
假设所有数据节点都在运行,则transporters
table 中有 10 行-第一个数据节点为 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_mgmClient 端中使用命令2 STOP
关闭了该集群中的一个数据节点,然后重复了上一个查询(再次使用mysqlClient 端),则此 table 现在仅显示 5 行,其余连接的每个连接为 1 行 Management 节点到另一个节点,包括自身和当前处于脱机状态的数据节点,并显示CONNECTING
table 示与当前处于脱机状态的数据节点的每个剩余连接的状态,如下所示:
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
列所指的* overload *状态发生。当给定的传输器处于过载状态时,任何尝试使用此传输器的新事务都会失败,并显示错误 1218(NDB 内核中的发送缓冲区已过载)。这会影响扫描和主键操作。
当传输器的发送缓冲区包含 60%的过载限制(默认情况下等于 0.6 * 2097152 = 1258291 字节)时,将发生此 table 的slowdown
和slowdown_count
列所引用的* slowdown *状态。在这种状态下,使用此运输工具进行的任何新扫描都会减小其批处理大小,以最大程度地减少运输工具上的负载。
发送缓冲区变慢或过载的常见原因包括:
-
与用于二进制日志记录的 SQL 节点在同一主机上具有一个数据节点(ndbd 或 ndbmtd)
-
每个事务或事务批处理有大量行
-
配置问题,例如SendBufferMemory不足
-
硬件问题,例如 RAM 不足或网络连接不良