除了中央配置文件外,集群还可以通过管理客户端 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 (9.0.0-ndb-9.0.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-9.0.0 ndb-9.0.0, single user mode, Nodegroup: 0, *) id=6 @127.0.0.1 (mysql-9.0.0 ndb-9.0.0, single user mode, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=50 @127.0.0.1 (mysql-9.0.0 ndb-9.0.0) [mysqld(API)] 2 node(s) id=100 @127.0.0.1 (mysql-9.0.0 ndb-9.0.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
标识的数据节点(或所有数据节点)。将
-i
选项与RESTART
一起使用会导致数据节点执行初始重启;也就是说,节点的文件系统将被删除并重新创建。其效果与停止数据节点进程,然后使用系统 shell 中的 ndbd--initial
重新启动它所获得的效果相同。注意使用此选项时,不会删除备份文件和磁盘数据文件。
使用
-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-9.0.0 ndb-9.0.0, Nodegroup: 0, *) id=6 @198.51.100.20 (mysql-9.0.0 ndb-9.0.0, Nodegroup: 0) id=7 @198.51.100.30 (mysql-9.0.0 ndb-9.0.0, Nodegroup: 1) id=8 @198.51.100.40 (mysql-9.0.0 ndb-9.0.0, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=50 @198.51.100.150 (mysql-9.0.0 ndb-9.0.0) [mysqld(API)] 2 node(s) id=100 @198.51.100.100 (mysql-9.0.0 ndb-9.0.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 命令。