除了中心配置文件外,集群也可以通过管理客户端 ndb_mgm 进行控制。这是运行集群的主要管理接口。
事件日志命令见 第 25.6.3 节,“NDB 集群生成的事件报告”;备份和恢复命令见 第 25.6.8 节,“NDB 集群的在线备份”。
使用 ndb_mgm 与 MySQL 集群管理器。 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 将导致命令返回错误。列表中的节点数必须与集群中已有的节点组中的节点数相同(每个 NDB 集群节点组必须具有相同的节点数)。例如,如果 NDB 集群由 2 个节点组组成,每个组有 2 个数据节点,那么新的节点组也必须有 2 个数据节点。
该命令创建的新节点组的节点组 ID 将自动确定,总是下一个未使用的节点组 ID;无法手动设置。
更多信息,请参见 第 25.6.7 节,“在线添加 NDB 集群数据节点”。
-
删除具有给定
nodegroup_id
的 NDB 集群节点组。该命令可用于从 NDB 集群中删除节点组。
DROP NODEGROUP
命令将节点组 ID 作为其唯一参数,该 ID 是要删除的节点组的 ID。DROP NODEGROUP
仅删除节点组中的数据节点,不停止数据节点、将其分配给不同的节点组或从集群配置中删除它们。在管理客户端SHOW
命令的输出中,未属于节点组的数据节点将以no nodegroup
的形式显示节点组 ID,例如(使用粗体文本表示):id=3 @10.100.2.67 (8.1.0-ndb-8.1.0, no nodegroup)
DROP NODEGROUP
仅在要删除的节点组中的所有数据节点完全为空时才生效,既没有表数据也没有表定义。由于目前无法使用 ndb_mgm 或 mysql 客户端从特定数据节点或节点组中删除所有数据,因此该命令仅在以下两种情况下成功:-
在 ndb_mgm 客户端中发出
CREATE NODEGROUP
之后,但在 mysql 客户端中发出任何ALTER TABLE ... REORGANIZE PARTITION
语句之前。 -
在删除所有
NDBCLUSTER
表使用DROP TABLE
之后。TRUNCATE TABLE
不适用于此目的,因为这仅删除表数据;数据节点继续存储NDBCLUSTER
表的定义,直到发出DROP TABLE
语句,导致表元数据被删除。
有关
DROP NODEGROUP
的更多信息,请参阅 第 25.6.7 节,“在线添加 NDB 集群数据节点”。 -
-
ENTER SINGLE USER MODE
node_id
进入单用户模式,只允许 MySQL 服务器(由节点 ID
node_id
标识)访问数据库。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.1.0 ndb-8.1.0, single user mode, Nodegroup: 0, *) id=6 @127.0.0.1 (mysql-8.1.0 ndb-8.1.0, single user mode, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=50 @127.0.0.1 (mysql-8.1.0 ndb-8.1.0) [mysqld(API)] 2 node(s) id=100 @127.0.0.1 (mysql-8.1.0 ndb-8.1.0, allowed single user) id=101 (not connected, accepting connect from any host)
-
退出单用户模式,启用所有 SQL 节点(即所有运行 mysqld 进程)访问数据库。
Note即使不在单用户模式下,也可以使用
EXIT SINGLE USER MODE
,尽管在这种情况下该命令无效。 -
显示所有可用命令的信息。
-
node_id
NODELOG DEBUG {ON|OFF}在节点日志中 toggles 调试日志记录,如同受影响的数据节点或节点已经使用
--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 $>
注意,leading 空格和
prompt
字符串中的空格不会被修剪。尾随空格将被删除。 -
终止管理客户端。
该命令不会影响集群中的任何节点。
-
显示数据节点
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
命令将失败,如果将节点离线将导致不完整的集群。使用-f
选项强制节点重新启动,而不检查集群完整性。如果使用该选项并导致不完整的集群,整个集群将重新启动。 -
显示集群和集群节点的基本信息。对于所有节点,输出包括节点的ID、类型和
NDB
软件版本。如果节点连接了,其IP地址也将显示;否则输出将显示未连接,接受来自
,其中ip_address
的连接任何主机
用于允许从任何地址连接的节点。此外,对于数据节点,输出还包括
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 Cluster Configuration --------------------- [ndbd(NDB)] 4 node(s) id=5 @198.51.100.10 (mysql-8.1.0 ndb-8.1.0, Nodegroup: 0, *) id=6 @198.51.100.20 (mysql-8.1.0 ndb-8.1.0, Nodegroup: 0) id=7 @198.51.100.30 (mysql-8.1.0 ndb-8.1.0, Nodegroup: 1) id=8 @198.51.100.40 (mysql-8.1.0 ndb-8.1.0, Nodegroup: 1) [ndb_mgmd(MGM)] 1 node(s) id=50 @198.51.100.150 (mysql-8.1.0 ndb-8.1.0) [mysqld(API)] 2 node(s) id=100 @198.51.100.100 (mysql-8.1.0 ndb-8.1.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
仅适用于所有数据节点,不影响管理节点。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
选项也禁用了在停止节点时执行的安全检查,以确保停止节点不会导致集群不完整。在其他 words,你应该在使用-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>
TLS 信息
命令是在 NDB 8.3.0 中添加的。有关更多信息,请参阅 第 25.6.15 节,“TLS 链接加密 for NDB 集群”。
其他命令。 在 ndb_mgm 客户端中还有许多其他命令,如下所示:
-
START BACKUP
用于在 ndb_mgm 客户端中执行在线备份;ABORT BACKUP
命令用于取消已经在进行中的备份。有关更多信息,请参阅 第 25.6.8 节,“NDB 集群在线备份”。 -
CLUSTERLOG
命令用于执行各种日志功能。有关更多信息,请参阅 第 25.6.3 节,“NDB 集群事件报告”。NODELOG DEBUG
激活或停用节点日志中的调试打印输出,如前所述。 -
对于测试和诊断工作,客户端支持一个
DUMP
命令,可以在集群上执行内部命令。除非 MySQL 支持指导,否则不应在生产环境中使用该命令。有关更多信息,请参阅 NDB 集群管理客户端 DUMP 命令。