Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

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命令行客户端来执行涉及启动或停止节点的操作。这些包括但不限于STARTSTOPRESTARTSHUTDOWN命令。更多信息,请参见MySQL 集群管理器进程命令.

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

  • CONNECT connection-string

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

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

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

    这个命令在在线添加新数据节点到 NDB 集群后使用,用于使它们加入新的节点组并开始完全参与集群。命令的唯一参数是逗号分隔的节点 ID 列表,这些 ID 是刚添加和启动的节点的 ID,以及要加入新的节点组的节点 ID。列表中不能包含重复的 ID;出现任何 duplicates 将导致命令返回错误。列表中的节点数必须与集群中已经存在的每个节点组中的节点数相同(每个 NDB 集群节点组都必须有相同数量的节点)。换言之,如果 NDB 集群由 2 个节点组,每个节点组都有 2 个数据节点,那么新的节点组也必须有 2 个数据节点。

    新创建的节点组的节点组 ID 由这个命令自动确定,总是集群中下一个未使用的节点组 ID;不能手动设置它。

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

  • DROP NODEGROUP nodegroup_id

    删除具有给定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_mgmmysql客户端可以从特定的数据节点或节点组中删除所有数据,这意味着该命令只能在以下两个情况下成功:

    1. 在使用CREATE NODEGROUP命令在ndb_mgm客户端之前,但是在使用ALTER TABLE ... REORGANIZE PARTITION语句在mysql客户端之前。

    2. 在使用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)
  • EXIT SINGLE USER MODE

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

    Note

    可以在不在单用户模式下使用 EXIT SINGLE USER MODE 命令,但是这个命令在这种情况下没有任何效果。

  • HELP

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

  • node_id 节点日志调试 {ON|OFF}

    在节点日志中启用或禁用调试记录,类似于使用--verbose选项启动数据节点。节点日志调试 ON启用调试记录,节点日志调试 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 spaces 和在prompt字符串中的空格不被截断。尾部空格将被删除。

  • QUIT, EXIT

    终止管理客户端。

    这个命令不会影响已连接到集群的任何节点。

  • node_id REPORT report_type

    显示类型为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在将节点offline时失败。如果使用-f选项强制节点重新启动,而结果是一个不完整的集群,则整个集群将重新启动。

  • SHOW

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

  • 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选项也会禁用在执行STOP命令时的安全检查,以确保停止节点不会导致集群不完整。换言之,您应该在使用-a选项和STOP命令时 exercise extreme care,因为这使得集群可能会进行强制关闭,因为它不再拥有NDB中的所有数据的完整副本。

  • TLS INFO

    显示集群 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 客户端中还有许多其他命令,以下列表显示了这些命令: