除了中央配置文件之外,还可以通过管理客户端 ndb_mgm 提供的命令行界面来控制集群。这是运行中集群的主要管理界面。
事件日志的命令在 第 25.6.3 节 “NDB 集群中生成的事件报告” 中给出;创建备份和从备份还原的命令在 第 25.6.8 节 “NDB 集群的在线备份” 中提供。
将 ndb_mgm 与 MySQL 集群管理器一起使用。 MySQL 集群管理器处理进程的启动和停止并在内部跟踪其状态,因此不需要对处于 MySQL 集群管理器控制下的 NDB 集群使用 ndb_mgm 来执行这些任务。建议 不要 使用 NDB 集群发行版附带的 ndb_mgm 命令行客户端来执行涉及启动或停止节点的操作。这些操作包括但不限于 START
、STOP
、RESTART
和 SHUTDOWN
命令。有关更多信息,请参阅 MySQL 集群管理器进程命令。
管理客户端具有以下基本命令。在下面的列表中,node_id
表示数据节点 ID 或关键字 ALL
,表示该命令应应用于集群的所有数据节点。
连接到连接字符串指示的管理服务器。如果客户端已连接到此服务器,则客户端将重新连接。
CREATE NODEGROUP
nodeid
[,nodeid
, ...]创建一个新的 NDB 集群节点组,并使数据节点加入该组。
此命令用于在将新的数据节点在线添加到 NDB 集群后,使它们加入一个新的节点组,从而开始完全参与集群。该命令将一个逗号分隔的节点 ID 列表作为其唯一参数,这些 ID 是刚刚添加和启动的节点的 ID,并且这些节点将加入新的节点组。列表中不能包含重复的 ID;任何重复项的存在都会导致命令返回错误。列表中的节点数必须与已经是集群一部分的每个节点组中的节点数相同(每个 NDB 集群节点组必须具有相同数量的节点)。换句话说,如果 NDB 集群由 2 个节点组组成,每个节点组有 2 个数据节点,那么新的节点组也必须有 2 个数据节点。
此命令创建的新节点组的节点组 ID 是自动确定的,始终是集群中下一个未使用的最高节点组 ID;无法手动设置它。
有关更多信息,请参阅 第 25.6.7 节 “在线添加 NDB 集群数据节点”。
删除具有给定
nodegroup_id
的 NDB 集群节点组。此命令可用于从 NDB 集群中删除节点组。
DROP NODEGROUP
将要删除的节点组的节点组 ID 作为其唯一参数。DROP NODEGROUP
仅用于从受影响的节点组中删除数据节点。它不会停止数据节点、将它们分配给不同的节点组或从集群配置中删除它们。在管理客户端SHOW
命令的输出中,不属于任何节点组的数据节点用no nodegroup
代替节点组 ID 来指示,如下所示(使用粗体文本指示)id=3 @10.100.2.67 (8.4.0-ndb-8.4.0, no nodegroup)
DROP NODEGROUP
仅在要删除的节点组中的所有数据节点都完全没有任何表数据和表定义时才有效。由于目前没有办法使用 ndb_mgm 或 mysql 客户端从特定数据节点或节点组中删除所有数据,这意味着该命令仅在以下两种情况下成功在 ndb_mgm 客户端中发出
CREATE NODEGROUP
之后,但在 mysql 客户端中发出任何ALTER TABLE ... REORGANIZE PARTITION
语句之前。使用
DROP TABLE
删除所有NDBCLUSTER
表之后。TRUNCATE TABLE
对此无效,因为它只删除表数据;数据节点继续存储NDBCLUSTER
表的定义,直到发出导致表元数据被删除的DROP TABLE
语句。
有关
DROP NODEGROUP
的更多信息,请参阅 第 25.6.7 节 “在线添加 NDB 集群数据节点”。ENTER SINGLE USER MODE
node_id
进入单用户模式,在这种模式下,只允许由节点 ID
node_id
标识的 MySQL 服务器访问数据库。ndb_mgm 客户端提供了一个明确的确认,表明该命令已发出并已生效,如下所示
ndb_mgm> ENTER SINGLE USER MODE 100 Single user mode entered Access is granted for API node 100 only.
此外,在
SHOW
命令的输出中,会指示在单用户模式下具有独占访问权限的 API 或 SQL 节点,如下所示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 进程)访问数据库。
注意即使不在单用户模式下,也可以使用
EXIT SINGLE USER MODE
,尽管在这种情况下该命令无效。显示所有可用命令的信息。
node_id
NODELOG DEBUG {ON|OFF}切换节点日志中的调试日志记录,就像使用
--verbose
选项启动受影响的数据节点一样。NODELOG DEBUG ON
启动调试日志记录;NODELOG DEBUG 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 $>
请注意,
prompt
字符串中的前导空格和空格不会被修剪。尾随空格将被删除。终止管理客户端。
此命令不会影响连接到集群的任何节点。
显示由
node_id
标识的数据节点或使用ALL
的所有数据节点的类型为report-type
的报告。目前,
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
标识的数据节点(或所有数据节点)。在使用
RESTART
命令时加入-i
选项将导致数据节点执行初始重启;也就是说,节点的文件系统将被删除并重新创建。其效果等同于停止数据节点进程,然后从系统 shell 中使用带有--initial
选项的 ndbd 命令重新启动它。注意使用此选项时,不会删除备份文件和磁盘数据文件。
使用
-n
选项将导致数据节点进程重启,但数据节点实际上不会上线,直到发出相应的START
命令。此选项的效果等同于停止数据节点,然后从系统 shell 中使用 ndbd--nostart
或 ndbd-n
重新启动它。使用
-a
选项将导致所有依赖于此节点的当前事务都被中止。当节点重新加入集群时,不会执行 GCP 检查。通常情况下,如果将节点脱机将导致集群不完整,则
RESTART
命令将失败。-f
选项强制节点在不进行此项检查的情况下重启。如果使用此选项并且结果是集群不完整,则整个集群将重新启动。显示有关集群和集群节点的基本信息。对于所有节点,输出包括节点的 ID、类型和
NDB
软件版本。如果节点已连接,则还会显示其 IP 地址;否则,输出将显示未连接,正在接受来自
,其中ip_address
的连接任何主机
用于允许从任何地址连接的节点。此外,对于数据节点,如果节点尚未启动,则输出将包括
正在启动
,并显示该节点所属的节点组。如果数据节点充当主节点,则用星号 (*
) 指示。考虑一个集群,其配置文件包含此处显示的信息(为了清晰起见,省略了其他可能的设置)
[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 集群单用户模式”)。它还指示当此模式生效时,哪个 API 或 SQL 节点具有独占访问权限。关闭所有集群数据节点和管理节点。要在此操作完成后退出管理客户端,请使用
EXIT
或QUIT
。此命令不会关闭连接到集群的任何 SQL 节点或 API 节点。
使由
node_id
标识的数据节点(或所有数据节点)联机。ALL START
仅适用于所有数据节点,不会影响管理节点。重要要使用此命令使数据节点联机,必须使用
--nostart
或-n
选项启动数据节点。显示由
node_id
标识的数据节点(或所有数据节点)的状态信息。可能的节点状态值包括
UNKNOWN
、NO_CONTACT
、NOT_STARTED
、STARTING
、STARTED
、SHUTTING_DOWN
和RESTARTING
。此命令的输出还指示集群何时处于单用户模式。
停止由
node_id
标识的数据节点或管理节点。注意ALL STOP
仅用于停止所有数据节点,不会影响管理节点。受此命令影响的节点将与集群断开连接,并且其关联的 ndbd 或 ndb_mgmd 进程将终止。
-a
选项导致节点立即停止,而不必等待任何挂起事务的完成。通常情况下,如果结果会导致集群不完整,则
STOP
命令将失败。-f
选项强制节点在不进行此项检查的情况下关闭。如果使用此选项并且结果是集群不完整,则集群将立即关闭。警告使用
-a
选项还会禁用在调用STOP
命令时执行的安全检查,该检查旨在确保停止节点不会导致集群不完整。换句话说,在将-a
选项与STOP
命令一起使用时,应格外小心,因为此选项可能会导致集群进行强制关闭,因为它不再具有存储在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 命令。