文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  NDB 集群管理客户端中的命令

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

除了中央配置文件外,集群还可以通过管理客户端 ndb_mgm 提供的命令行界面进行控制。这是运行中集群的主要管理界面。

事件日志的命令在 第 25.6.3 节 “NDB 集群中生成的事件报告” 中给出;创建备份和从备份恢复的命令在 第 25.6.8 节 “NDB 集群的在线备份” 中提供。

将 ndb_mgm 与 MySQL 集群管理器一起使用。  MySQL 集群管理器处理进程的启动和停止,并在内部跟踪其状态,因此对于处于 MySQL 集群管理器控制下的 NDB 集群,无需使用 ndb_mgm 来执行这些任务。建议不要使用 NDB 集群发行版附带的 ndb_mgm 命令行客户端来执行涉及启动或停止节点的操作。这些操作包括但不限于 STARTSTOPRESTARTSHUTDOWN 命令。有关更多信息,请参阅 MySQL 集群管理器进程命令

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

  • CONNECT connection-string

    连接到连接字符串指示的管理服务器。如果客户端已连接到此服务器,则客户端将重新连接。

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

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

    此命令在将新的数据节点在线添加到 NDB 集群后使用,并使它们加入一个新的节点组,从而开始完全参与集群。该命令的唯一参数是一个逗号分隔的节点 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。

    DROP NODEGROUP 仅用于从受影响的节点组中删除数据节点。它不会停止数据节点、将它们分配给不同的节点组或将它们从集群配置中删除。在管理客户端 SHOW 命令的输出中,不属于任何节点组的数据节点用 no nodegroup 代替节点组 ID 表示,如下所示(使用粗体文本表示)

    id=3    @10.100.2.67  (9.0.0-ndb-9.0.0, no nodegroup)

    DROP NODEGROUP 仅在要删除的节点组中的所有数据节点完全不包含任何表数据和表定义时才有效。由于目前无法使用 ndb_mgmmysql 客户端从特定数据节点或节点组中删除所有数据,这意味着该命令仅在以下两种情况下才会成功

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

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

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

    注意

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

  • HELP

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

  • node_id NODELOG DEBUG {ON|OFF}

    切换节点日志中的调试日志记录,就像使用 --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
    $>

    请注意,prompt 字符串中的前导空格和空格不会被修剪。尾随空格将被删除。

  • QUIT, EXIT

    终止管理客户端。

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

  • node_id REPORT report-type

    显示由 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 --nostartndbd -n 重新启动它所获得的效果相同。

    使用 -a 选项会导致所有依赖于此节点的当前事务被中止。当节点重新加入集群时,不会进行 GCP 检查。

    通常,如果将节点脱机会导致集群不完整,则 RESTART 将失败。-f 选项强制节点重新启动,而不进行此项检查。如果使用此选项并且导致集群不完整,则整个集群将重新启动。

  • SHOW

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

  • SHUTDOWN

    关闭所有集群数据节点和管理节点。要在执行此操作后退出管理客户端,请使用 EXITQUIT

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

  • node_id START

    使由 node_id 标识的数据节点(或所有数据节点)上线。

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

    重要

    要使用此命令使数据节点上线,必须使用 --nostart-n 启动数据节点。

  • node_id STATUS

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

    可能的节点状态值包括 UNKNOWNNO_CONTACTNOT_STARTEDSTARTINGSTARTEDSHUTTING_DOWNRESTARTING

    此命令的输出还会指示集群何时处于单用户模式。

  • node_id STOP [-a] [-f]

    停止由 node_id 标识的数据节点或管理节点。

    注意

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

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

    -a 选项会导致节点立即停止,而无需等待任何挂起事务完成。

    通常,如果结果会导致集群不完整,则 STOP 将失败。-f 选项强制节点关闭,而不进行此项检查。如果使用此选项并且导致集群不完整,则集群将立即关闭。

    警告

    使用 -a 选项还会禁用在调用 STOP 时执行的安全检查,该检查用于确保停止节点不会导致集群不完整。换句话说,在将 -a 选项与 STOP 命令一起使用时,应格外小心,因为此选项可能会导致集群进行强制关闭,因为它不再具有存储在 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 客户端中提供的许多其他命令在其他地方进行了说明,如下列表所示