Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Commands in the NDB Cluster Management Client

25.6.1 NDB 集群管理客户端中的命令

除了中心配置文件外,集群也可以通过管理客户端 ndb_mgm 进行控制。这是运行集群的主要管理接口。

事件日志命令见 第 25.6.3 节,“NDB 集群生成的事件报告”;备份和恢复命令见 第 25.6.8 节,“NDB 集群的在线备份”

使用 ndb_mgm 与 MySQL 集群管理器。 MySQL 集群管理器处理进程的启动和停止,并跟踪它们的状态,因此不需要使用 ndb_mgm 来执行这些任务对于在 MySQL 集群管理器控制下的 NDB 集群。建议 不要 使用随 NDB 集群分发的 ndb_mgm 命令行客户端来执行涉及启动或停止节点的操作。这些操作包括但不限于 STARTSTOPRESTARTSHUTDOWN 命令。更多信息,请参见 MySQL 集群管理器进程命令

管理客户端具有以下基本命令。在以下列表中,node_id 表示数据节点 ID 或关键字 ALL,表示命令应应用于集群的所有数据节点。

  • CONNECT connection-string

    连接到管理服务器,指定连接字符串。如果客户端已经连接到该服务器,客户端将重新连接。

  • CREATE NODEGROUP nodeid[, nodeid, ...]

    创建新的 NDB 集群节点组,并使数据节点加入该组。

    该命令用于在 NDB 集群中添加新数据节点在线后,使它们加入新的节点组并开始完全参与集群。该命令将一个逗号分隔的节点 ID 列表作为其唯一参数,这些 ID 是刚刚添加和启动的节点的 ID,并将加入新的节点组。列表不得包含重复的 ID;出现重复的 ID 将导致命令返回错误。列表中的节点数必须与集群中已有的节点组中的节点数相同(每个 NDB 集群节点组必须具有相同的节点数)。例如,如果 NDB 集群由 2 个节点组组成,每个组有 2 个数据节点,那么新的节点组也必须有 2 个数据节点。

    该命令创建的新节点组的节点组 ID 将自动确定,总是下一个未使用的节点组 ID;无法手动设置。

    更多信息,请参见 第 25.6.7 节,“在线添加 NDB 集群数据节点”

  • DROP NODEGROUP nodegroup_id

    删除具有给定 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_mgmmysql 客户端从特定数据节点或节点组中删除所有数据,因此该命令仅在以下两种情况下成功:

    1. ndb_mgm 客户端中发出 CREATE NODEGROUP 之后,但在 mysql 客户端中发出任何 ALTER TABLE ... REORGANIZE PARTITION 语句之前。

    2. 在删除所有 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)
  • EXIT SINGLE USER MODE

    退出单用户模式,启用所有 SQL 节点(即所有运行 mysqld 进程)访问数据库。

    Note

    即使不在单用户模式下,也可以使用 EXIT SINGLE USER MODE,尽管在这种情况下该命令无效。

  • HELP

    显示所有可用命令的信息。

  • node_id NODELOG DEBUG {ON|OFF}

    在节点日志中 toggles 调试日志记录,如同受影响的数据节点或节点已经使用 --verbose 选项启动一样。NODELOG DEBUG ON 启动调试日志记录:NODELOG DEBUG OFF 关闭调试日志记录。

  • PROMPT [prompt]

    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 字符串中的空格不会被修剪。尾随空格将被删除。

  • QUIT, EXIT

    终止管理客户端。

    该命令不会影响集群中的任何节点。

  • node_id REPORT 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 --nostartndbd -n 从系统 shell 中启动相同。

    使用 -a 将当前依赖该节点的所有事务中止。重新加入集群时,不会执行 GCP 检查。

    通常,RESTART 命令将失败,如果将节点离线将导致不完整的集群。使用 -f 选项强制节点重新启动,而不检查集群完整性。如果使用该选项并导致不完整的集群,整个集群将重新启动。

  • SHOW

    显示集群和集群节点的基本信息。对于所有节点,输出包括节点的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 节点在该模式下具有独占访问权。

  • SHUTDOWN

    关闭所有集群数据节点和管理节点。要退出管理客户端,请使用EXITQUIT

    该命令不会关闭任何连接到集群的 SQL 节点或 API 节点。

  • node_id START

    将数据节点在线,标识为 node_id(或所有数据节点)。

    ALL START 仅适用于所有数据节点,不影响管理节点。

    Important

    要使用该命令将数据节点在线,数据节点必须使用--nostart-n启动。

  • node_id STATUS

    显示数据节点的状态信息,标识为 node_id(或所有数据节点)。

    可能的节点状态值包括 UNKNOWNNO_CONTACTNOT_STARTEDSTARTINGSTARTEDSHUTTING_DOWNRESTARTING

    该命令的输出还将指示集群是否处于单用户模式。

  • node_id STOP [-a] [-f]

    停止数据或管理节点,标识为 node_id

    Note

    ALL STOP 仅适用于停止所有数据节点,不影响管理节点。

    受影响的节点断开与集群的连接,并且关联的ndbdndb_mgmd进程终止。

    选项 -a 使节点立即停止,不等待任何挂起的事务完成。

    通常,STOP 命令将失败,如果结果将导致不完整的集群。选项 -f 强制节点关闭,不检查这种情况。如果使用该选项并且结果是不完整的集群,集群将立即关闭。

    Warning

    使用 -a 选项也禁用了在停止节点时执行的安全检查,以确保停止节点不会导致集群不完整。在其他 words,你应该在使用 -a 选项与 STOP 命令时极其小心,因为该选项使得集群可能会强制关闭,因为它不再拥有所有数据的完整副本,存储在 NDB 中。

  • TLS 信息

    显示集群 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 客户端中还有许多其他命令,如下所示: