25.6.1 NDB 集群管理客户端中的命令
除了中心配置文件外,集群还可以通过命令行界面控制,该界面可通过管理客户端ndb_mgm访问。这个是对运行中的集群的主要管理界面。
事件日志命令在第25.6.3节,“NDB 集群中的事件报告”中给出;创建备份和从备份恢复的命令在第25.6.8节,“NDB 集群的在线备份”中提供。
使用 MySQL 集群管理器中的 ndb_mgm. MySQL 集群管理器负责启动和停止进程,并且内部跟踪它们的状态,因此不需要使用ndb_mgm来执行这些任务,以控制一个由 MySQL 集群管理器控制的 NDB 集群。建议不要使用 NDB 集群发行版中的ndb_mgm命令行客户端来执行涉及启动或停止节点的操作。这些包括但不限于START
、STOP
、RESTART
和SHUTDOWN
命令。更多信息,请参见MySQL 集群管理器进程命令.
管理客户端具有以下基本命令。在以下列表中,node_id
表示数据节点 ID 或关键字ALL,表示该命令应应用于集群中的所有数据节点。
-
将客户端连接到由连接字符串指定的管理服务器。如果客户端已经连接到这个服务器,客户端重新连接。
-
CREATE NODEGROUP
nodeid
[,nodeid
, ...]创建一个新的 NDB 集群节点组,并使数据节点加入该组。
这个命令在在线添加新数据节点到 NDB 集群后使用,用于使它们加入新的节点组并开始完全参与集群。命令的唯一参数是逗号分隔的节点 ID 列表,这些 ID 是刚添加和启动的节点的 ID,以及要加入新的节点组的节点 ID。列表中不能包含重复的 ID;出现任何 duplicates 将导致命令返回错误。列表中的节点数必须与集群中已经存在的每个节点组中的节点数相同(每个 NDB 集群节点组都必须有相同数量的节点)。换言之,如果 NDB 集群由 2 个节点组,每个节点组都有 2 个数据节点,那么新的节点组也必须有 2 个数据节点。
新创建的节点组的节点组 ID 由这个命令自动确定,总是集群中下一个未使用的节点组 ID;不能手动设置它。
更多信息,请见第 25.6.7 节,“在线添加 NDB 集群数据节点”。
-
删除具有给定
nodegroup_id
的 NDB 集群节点组。可以使用该命令从 NDB 集群中删除一个节点组。
DROP NODEGROUP
只需要一个参数,即要删除的节点组 ID。DROP NODEGROUP
只是将数据节点从受影响的节点组中移除,不会停止数据节点、将它们分配到另一个节点组或从集群配置中删除。没有属于节点组的数据节点在管理客户端SHOW
命令的输出中被表示为no nodegroup
,例如:id=3 @10.100.2.67 (8.4.0-ndb-8.4.0, no nodegroup)
DROP NODEGROUP
只能在要删除的节点组中的所有数据节点完全为空时工作,因为当前没有使用ndb_mgm或mysql客户端可以从特定的数据节点或节点组中删除所有数据,这意味着该命令只能在以下两个情况下成功:-
在使用
CREATE NODEGROUP
命令在ndb_mgm客户端之前,但是在使用ALTER TABLE ... REORGANIZE PARTITION
语句在mysql客户端之前。 -
在使用
NDBCLUSTER
表的所有DROP TABLE
语句后。TRUNCATE TABLE
不适用于这个目的,因为这只删除表数据;数据节点继续存储NDBCLUSTER
表的定义,直到发出DROP TABLE
语句,使得表元数据被删除。
关于Section 25.6.7, “Adding NDB Cluster Data Nodes Online”的更多信息,请查看。
-
-
ENTER SINGLE USER MODE
node_ id
进入单用户模式,仅允许 MySQL 服务器(identified by the node ID
node_ id
)访问数据库。NDB 集群管理客户端
ndb_mgm
提供了明确的确认,这个命令已经被发出并生效,如下所示:ndb_mgm> ENTER SINGLE USER MODE 100 Single user mode entered Access is granted for API node 100 only.
此外,在单用户模式下拥有独占访问权限的 API 或 SQL 节点在
SHOW
命令的输出中被指示,如下所示:ndb_mgm> SHOW Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=5 @127.0.0.1 (mysql-8.4.0 ndb-8.4.0, single user mode, Nodegroup: 0, *) id=6 @127.0.0.1 (mysql-8.4.0 ndb-8.4.0, single user mode, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=50 @127.0.0.1 (mysql-8.4.0 ndb-8.4.0) [mysqld(API)] 2 node(s) id=100 @127.0.0.1 (mysql-8.4.0 ndb-8.4.0, allowed single user) id=101 (not connected, accepting connect from any host)
-
退出单用户模式,启用所有 SQL 节点(即所有运行 mysqld 进程)的访问数据库。
Note可以在不在单用户模式下使用
EXIT SINGLE USER MODE
命令,但是这个命令在这种情况下没有任何效果。 -
显示所有可用命令的信息。
-
在节点日志中启用或禁用调试记录,类似于使用
--verbose
选项启动数据节点。节点日志调试 ON
启用调试记录,节点日志调试 OFF
禁用调试记录。 -
将ndb_mgm的提示字符串更改为字面量
prompt
。prompt
不应该被引号括起来(除非您想让提示包含引号)。与mysql客户端不同,特殊字符序列和转义序列不被识别。如果没有提供参数,该命令将重置提示到默认值(ndb_mgm>
)。以下是一些示例:
ndb_mgm> PROMPT mgm#1: mgm#1: SHOW Cluster Configuration ... mgm#1: PROMPT mymgm > mymgm > PROMPT 'mymgm:' 'mymgm:' PROMPT mymgm: mymgm: PROMPT ndb_mgm> EXIT $>
注意,leading spaces 和在
prompt
字符串中的空格不被截断。尾部空格将被删除。 -
终止管理客户端。
这个命令不会影响已连接到集群的任何节点。
-
显示类型为
report_type
的报告,对于数据节点node_id
进行标识,或者使用ALL
对所有数据节点进行报告。当前,有三个被接受的值为
report_type
:-
BackupStatus
提供正在进行中的集群备份状态报告 -
MemoryUsage
显示每个数据节点使用的数据内存和索引内存信息,如下所示:ndb_mgm> ALL REPORT MEMORY Node 1: Data usage is 5%(177 32K pages of total 3200) Node 1: Index usage is 0%(108 8K pages of total 12832) Node 2: Data usage is 5%(177 32K pages of total 3200) Node 2: Index usage is 0%(108 8K pages of total 12832)
这些信息也可以从
ndbinfo.memoryusage
表中获取。 -
EventLog
报告来自一个或多个数据节点的事件日志缓冲区中的事件。
report-type
是不区分大小写的,且可以使用“模糊”;对于MemoryUsage
,您可以使用MEMORY
(如前一例所示),memory
,或甚至简单地使用MEM
(或mem
)。您也可以类似地简化BackupStatus
。 -
-
node_ id
RESTART [-n] [-i] [-a] [-f]重启由
node_id
标识的数据节点(或所有数据节点)。使用
-i
选项与RESTART
可以使数据节点执行初始重启,即文件系统被删除并重新创建。该效果与停止数据节点进程,然后使用 ndbd--initial
从系统shell启动数据节点相同。Note备份文件和磁盘数据文件在使用该选项时不会被删除。
使用
-n
选项将数据节点进程重新启动,但是直到发出适当的START
命令,数据节点才实际上线。该选项的效果与使用ndbd--nostart
或ndbd-n
从系统shell停止和重新启动数据节点相同。使用
-a
选项将当前依赖于该节点的所有事务都中止。节点重新加入集群时不执行GCP检查。通常,
RESTART
在将节点offline时失败。如果使用-f
选项强制节点重新启动,而结果是一个不完整的集群,则整个集群将重新启动。 -
显示集群和节点的基本信息。对于所有节点,输出包括节点的ID、类型和
NDB
软件版本。如果节点已连接,则还显示其IP地址;否则,输出将显示not connected, accepting connect from
,其中ip_address
any host
用于允许从任何地址连接的节点。此外,对于数据节点,输出还包括
starting
,如果节点尚未启动,并显示该节点所属的组。如果数据节点正在充当主节点,这将以星号(*
)表示。考虑一个配置文件包含以下信息的集群(可能省略其他设置以提高清晰度):
[ndbd default] DataMemory= 128G NoOfReplicas= 2 [ndb_mgmd] NodeId=50 HostName=198.51.100.150 [ndbd] NodeId=5 HostName=198.51.100.10 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=6 HostName=198.51.100.20 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=7 HostName=198.51.100.30 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=8 HostName=198.51.100.40 DataDir=/var/lib/mysql-cluster [mysqld] NodeId=100 HostName=198.51.100.100 [api] NodeId=101
在这个集群(包括一个SQL节点)启动后,
SHOW
命令显示以下输出:ndb_mgm> SHOW Connected to Management Server at: localhost:1186 (using cleartext) Cluster Configuration --------------------- [ndbd(NDB)] 4 node(s) id=5 @198.51.100.10 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0, *) id=6 @198.51.100.20 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 0) id=7 @198.51.100.30 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 1) id=8 @198.51.100.40 (mysql-8.4.0 ndb-8.4.0, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=50 @198.51.100.150 (mysql-8.4.0 ndb-8.4.0) [mysqld(API)] 2 node(s) id=100 @198.51.100.100 (mysql-8.4.0 ndb-8.4.0) id=101 (not connected, accepting connect from any host)
该命令的输出还指示集群是否处于单用户模式(请参阅
ENTER SINGLE USER MODE
命令的描述,以及第25.6.6节,“NDB Cluster Single User Mode”)。它还指示在该模式下哪个API或SQL节点具有独占访问权限。 -
关闭所有集群数据节点和管理节点。退出管理客户端后,使用
EXIT
或QUIT
。这个命令不会关闭任何与集群连接的SQL节点或API节点。
-
将数据节点
node_id
(或所有数据节点)带在线。ALL START
只对所有数据节点有效,不影响管理节点。Important使用这个命令将数据节点带在线时,数据节点必须使用
--nostart
或-n
启动。 -
显示数据节点
node_id
(或所有数据节点)的状态信息。可能的节点状态值包括
UNKNOWN
、NO_CONTACT
、NOT_STARTED
、STARTING
、STARTED
、SHUTTING_DOWN
和RESTARTING
。该命令的输出还会指示集群是否处于单用户模式。
-
停止由
node_id
标识的数据或管理节点。NoteALL STOP
只能停止所有数据节点,而不影响管理节点。受到该命令影响的节点将从集群中断开连接,并且其关联的ndbd或ndb_mgmd进程将终止。
-a
选项会立即停止节点,而不等待任何挂起事务的完成。通常,
STOP
命令在结果将导致集群不完整时失败。-f
选项强制节点关闭,不检查是否会导致集群不完整。如果使用该选项并且结果是一个不完整的集群,集群将立即关闭。Warning使用
-a
选项也会禁用在执行STOP
命令时的安全检查,以确保停止节点不会导致集群不完整。换言之,您应该在使用-a
选项和STOP
命令时 exercise extreme care,因为这使得集群可能会进行强制关闭,因为它不再拥有NDB
中的所有数据的完整副本。 -
显示集群 TLS 信息,如当前连接是否使用 TLS、管理节点当前知晓的 TLS 证书和管理节点对总连接数、升级到 TLS 的连接数和授权失败次数。示例输出如下:
ndb_mgm> TLS INFO Session ID: 1 Peer address: 127.0.0.1 Certificate name: NDB Management Node Jun 2023 Certificate serial: B5:23:8F:D1:11:85:E5:93:ED Certificate expires: 23-Nov-2023 Server statistics since restart Total accepted connections: 6 Total connections upgraded to TLS: 2 Current connections: 3 Current connections using TLS: 2 Authorization failures: 0 ndb_mgm>
更多信息,请见第25.6.15节,“NDB 集群 TLS 链路加密”。
其他命令。 ndb_mgm 客户端中还有许多其他命令,以下列表显示了这些命令:
-
START BACKUP
用于在 ndb_mgm 客户端中执行在线备份;ABORT BACKUP
命令用于取消已经在进行中的备份。更多信息,请见 第 25.6.8 节,“NDB 集群在线备份”。 -
CLUSTERLOG
命令用于执行各种日志函数。更多信息和示例,请见 第 25.6.3 节,“NDB 集群事件报告”。NODELOG DEBUG
激活或停用节点日志中的调试打印语句,如前一节中所述。 -
为了测试和诊断工作,客户端支持一个
DUMP
命令,可以用来在集群上执行内部命令。除非 MySQL 支持团队明确指示,否则不应该在生产环境中使用它。更多信息,请见 NDB 集群管理客户端 DUMP 命令。