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

[](<>)[](<>)[](<>)

除了中央配置文件外，还可以通过管理客户端提供的命令行界面来控制集群[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html).这是运行集群的主要管理界面。

事件日志的命令在[第 23.6.3 节，“在 NDB 集群中生成的事件报告”](mysql-cluster-event-reports.html);中提供了用于创建备份和从中恢复的命令[第 23.6.8 节，“NDB Cluster 的在线备份”](mysql-cluster-backup.html).

**使用 ndb_mgm 与 MySQL 集群管理器。**  [](<>) [](<>)MySQL Cluster Manager 1.4.8 为 NDB 8.0 提供实验性支持。MySQL Cluster Manager 处理启动和停止进程并在内部跟踪它们的状态，因此没有必要使用[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)对于受 MySQL Cluster Manager 控制的 NDB Cluster 的这些任务。推荐*不是*使用[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)NDB Cluster 发行版附带的命令行客户端，用于执行涉及启动或停止节点的操作。这些包括但不限于[`开始`](mysql-cluster-mgm-client-commands.html#ndbclient-start),[`停止`](mysql-cluster-mgm-client-commands.html#ndbclient-stop),[`重新开始`](mysql-cluster-mgm-client-commands.html#ndbclient-restart)， 和[`关掉`](mysql-cluster-mgm-client-commands.html#ndbclient-shutdown)命令。有关详细信息，请参阅[MySQL 集群管理器进程命令](https://dev.mysql.com/doc/mysql-cluster-manager/1.4/en/mcm-process-commands.html).

管理客户端具有以下基本命令。在下面的清单中，*`node_id`*表示数据节点 ID 或关键字`全部`，表示该命令应应用于集群的所有数据节点。

-   [](<>) [`连接 *`连接字符串`*`](mysql-cluster-mgm-client-commands.html#ndbclient-connect)

    [](<>)[](<>)

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

-   [](<>) [`创建节点组 *`节点ID`*[, *`节点ID`*, ...]`](mysql-cluster-mgm-client-commands.html#ndbclient-create-nodegroup)

    [](<>)[](<>)

    创建一个新的 NDB Cluster 节点组并导致数据节点加入它。

    此命令在将新数据节点在线添加到 NDB 集群后使用，并使它们加入新节点组，从而开始完全参与集群。该命令以逗号分隔的节点 ID 列表作为其唯一参数——这些是刚刚添加和启动的节点的 ID，它们将加入新的节点组。该列表不得包含重复的 ID；从 NDB 8.0.26 开始，任何重复项的存在都会导致命令返回错误。列表中的节点数必须与已属于集群的每个节点组中的节点数相同（每个 NDB Cluster 节点组必须具有相同的节点数）。换句话说，如果 NDB Cluster 由 2 个节点组组成，每个节点组有 2 个数据节点，那么新节点组也必须有 2 个数据节点。

    此命令创建的新节点组的节点组 ID 是自动确定的，并且始终是集群中下一个未使用的节点组 ID；无法手动设置。

    有关详细信息，请参阅[第 23.6.7 节，“在线添加 NDB Cluster 数据节点”](mysql-cluster-online-add-node.html).

-   [](<>) [`删除节点组 *`节点组\_id`*`](mysql-cluster-mgm-client-commands.html#ndbclient-drop-nodegroup)

    [](<>)[](<>)

    删除具有给定的 NDB Cluster 节点组*`节点组_id`*.

    此命令可用于从 NDB Cluster 中删除节点组。`删除节点组`将要删除的节点组的节点组 ID 作为其唯一参数。

    `删除节点组`仅用于从该节点组中删除受影响节点组中的数据节点。它不会停止数据节点、将它们分配给不同的节点组或将它们从集群的配置中删除。管理客户端的输出中指示了不属于节点组的数据节点[`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)命令与`没有节点组`代替节点组 ID，如下所示（使用粗体文本表示）：

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

    `删除节点组`仅当要删除的节点组中的所有数据节点完全没有任何表数据和表定义时才有效。由于目前没有办法使用[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)或者[**mysql**](mysql.html)客户端从特定数据节点或节点组中删除所有数据，这意味着该命令仅在以下两种情况下成功：

    1.  发出后[`创建节点组`](mysql-cluster-mgm-client-commands.html#ndbclient-create-nodegroup)在里面[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户，但在发出任何[`ALTER TABLE ...重新组织分区`](alter-table.html)中的陈述[**mysql**](mysql.html)客户。

    2.  全部放下后[`NDBCLUSTER`](mysql-cluster.html)表使用[`删除表`](drop-table.html).

          [`截断表`](truncate-table.html)不适用于此目的，因为这只会删除表数据；数据节点继续存储[`NDBCLUSTER`](mysql-cluster.html)表的定义直到[`删除表`](drop-table.html)发出导致表元数据被删除的语句。

        有关更多信息`删除节点组`， 看[第 23.6.7 节，“在线添加 NDB Cluster 数据节点”](mysql-cluster-online-add-node.html).

-   [](<>) [`进入单用户模式 ​​`node_id`*`](mysql-cluster-mgm-client-commands.html#ndbclient-enter-single-user-mode)

    [](<>)[](<>)[](<>)[](<>)

    进入单用户模式，此时只有节点 ID 标识的 MySQL 服务器*`node_id`*被允许访问数据库。

    这[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户端明确确认该命令已发出并生效，如下所示：

    ```
    ndb_mgm> ENTER SINGLE USER MODE 100
    Single user mode entered
    Access is granted for API node 100 only.
    ```

    此外，在单用户模式下具有独占访问权限的 API 或 SQL 节点在[`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)命令，像这样：

    ```
    ndb_mgm> SHOW
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     2 node(s)
    id=5    @127.0.0.1  (mysql-8.0.29 ndb-8.0.29, single user mode, Nodegroup: 0, *)
    id=6    @127.0.0.1  (mysql-8.0.29 ndb-8.0.29, single user mode, Nodegroup: 0)

    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @127.0.0.1  (mysql-8.0.29 ndb-8.0.29)

    [mysqld(API)]   2 node(s)
    id=100  @127.0.0.1  (mysql-8.0.29 ndb-8.0.29, allowed single user)
    id=101 (not connected, accepting connect from any host)
    ```

-   [](<>) [`退出单用户模式`](mysql-cluster-mgm-client-commands.html#ndbclient-exit-single-user-mode)

    [](<>)[](<>)

    退出单用户模式，启用所有 SQL 节点（即所有正在运行的[**mysqld**](mysqld.html)进程）来访问数据库。

    笔记

    可以使用`退出单用户模式`即使不在单用户模式下，尽管该命令在这种情况下无效。

-   [](<>) [`帮助`](mysql-cluster-mgm-client-commands.html#ndbclient-help)

    [](<>)[](<>)

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

-   [](<>) [`*`node_id`* 节点调试 {ON|OFF}`](mysql-cluster-mgm-client-commands.html#ndbclient-nodelog-debug)

    [](<>)[](<>)

    切换节点日志中的调试日志，就好像受影响的数据节点或节点已使用[`--详细`](mysql-cluster-programs-ndbd.html#option_ndbd_verbose)选项。`节点日志调试开启`开始调试日志记录；`NODELOG 调试关闭`关闭调试注销。

-   [](<>) [`迅速的 [*`迅速的`*]`](mysql-cluster-mgm-client-commands.html#ndbclient-prompt)

    [](<>)[](<>)

    更改显示的提示[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)到字符串文字*`迅速的`*.

    *`迅速的`*不应引用（除非您希望提示包含引号）。与案例不同的是[**mysql**](mysql.html)客户端，特殊字符序列和转义无法识别。如果在没有参数的情况下调用，该命令会将提示重置为默认值 (`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
    $>
    ```

    请注意，前导空格和空格*`迅速的`*字符串不被修剪。尾随空格被删除。

-   [](<>) [`放弃`](mysql-cluster-mgm-client-commands.html#ndbclient-quit),[`出口`](mysql-cluster-mgm-client-commands.html#ndbclient-quit)

    [](<>)[](<>)[](<>)[](<>)

    终止管理客户端。

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

-   [](<>) [`*`node_id`* 报告 *`报告类型`*`](mysql-cluster-mgm-client-commands.html#ndbclient-report)

    [](<>)[](<>)

    显示类型的报告*`报告类型`*对于由标识的数据节点*`node_id`*，或者对于所有数据节点使用`全部`.

    目前，有三个可接受的值*`报告类型`*：

    -   `备份状态`提供有关正在进行的集群备份的状态报告

    -   `内存使用情况`显示每个数据节点正在使用多少数据内存和索引内存，如下例所示：

        ```
        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`](mysql-cluster-ndbinfo-memoryusage.html)桌子。

    -   `事件日志`从一个或多个数据节点的事件日志缓冲区报告事件。

    *`报告类型`*不区分大小写且“模糊”；为了`内存使用情况`， 您可以使用`记忆`（如前面的示例所示），`记忆`，甚至简单地`记忆体`（要么`内存`）。你可以缩写`备份状态`以类似的方式。

-   [](<>) [`*`node_id`* 重启 [-n] [-i] [-a] [-f]`](mysql-cluster-mgm-client-commands.html#ndbclient-restart)

    [](<>)[](<>)

    重新启动由标识的数据节点*`node_id`*（或所有数据节点）。

    使用`-一世`选项`重新开始`导致数据节点执行初始重启；即节点的文件系统被删除并重新创建。效果与停止数据节点进程然后再次使用[**ndbd**](mysql-cluster-programs-ndbd.html) [`- 最初的`](mysql-cluster-programs-ndbd.html#option_ndbd_initial)从系统外壳。

    笔记

    使用此选项时，不会删除备份文件和磁盘数据文件。

    使用`-n`选项会导致数据节点进程重新启动，但数据节点实际上不会在线，直到适当的[`开始`](mysql-cluster-mgm-client-commands.html#ndbclient-start)命令发出。此选项的效果与停止数据节点然后再次使用[**ndbd**](mysql-cluster-programs-ndbd.html) [`--nostart`](mysql-cluster-programs-ndbd.html#option_ndbd_nostart)要么[**ndbd**](mysql-cluster-programs-ndbd.html) `-n`从系统外壳。

    使用`-一种`导致依赖于该节点的所有当前事务被中止。当节点重新加入集群时，不会进行 GCP 检查。

    一般，`重新开始`如果使节点脱机会导致集群不完整，则会失败。这`-f`选项强制节点重新启动而不检查这一点。如果使用此选项并且结果是不完整的集群，则重新启动整个集群。

-   [](<>) [`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)

    [](<>)[](<>)

    显示集群和集群节点的基本信息。对于所有节点，输出包括节点的 ID、类型和`新开发银行`软件版本。如果节点已连接，还会显示其 IP 地址；否则输出显示`未连接，接受来自 * 的连接`IP地址`*`， 和`任何主机`用于允许从任何地址连接的节点。

    此外，对于数据节点，输出包括`开始`如果节点尚未启动，则显示该节点所属的节点组。如果数据节点充当主节点，则用星号 (`*`）。

    考虑一个集群，其配置文件包含此处显示的信息（为清楚起见，省略了可能的其他设置）：

    ```
    [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 节点）启动后，`显示`显示以下输出：

    ```
    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.0.29 ndb-8.0.29, Nodegroup: 0, *)
    id=6    @198.51.100.20  (mysql-8.0.29 ndb-8.0.29, Nodegroup: 0)
    id=7    @198.51.100.30  (mysql-8.0.29 ndb-8.0.29, Nodegroup: 1)
    id=8    @198.51.100.40  (mysql-8.0.29 ndb-8.0.29, Nodegroup: 1)

    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @198.51.100.150  (mysql-8.0.29 ndb-8.0.29)

    [mysqld(API)]   2 node(s)
    id=100  @198.51.100.100  (mysql-8.0.29 ndb-8.0.29)
    id=101 (not connected, accepting connect from any host)
    ```

    此命令的输出还指示集群何时处于单用户模式（请参阅[`进入单用户模式`](mysql-cluster-mgm-client-commands.html#ndbclient-enter-single-user-mode)命令，以及[第 23.6.6 节，“NDB Cluster 单用户模式”](mysql-cluster-single-user-mode.html)）。在 NDB 8.0 中，当此模式生效时，它还指示哪个 API 或 SQL 节点具有独占访问权限；这仅在连接到集群的所有数据节点和管理节点都运行 NDB 8.0 时才有效。

-   [](<>) [`关掉`](mysql-cluster-mgm-client-commands.html#ndbclient-shutdown)

    [](<>)[](<>)

    关闭所有集群数据节点和管理节点。要在完成此操作后退出管理客户端，请使用[`出口`](mysql-cluster-mgm-client-commands.html#ndbclient-quit)要么[`放弃`](mysql-cluster-mgm-client-commands.html#ndbclient-quit).

    这个命令确实*不是*关闭连接到集群的所有 SQL 节点或 API 节点。

-   [](<>) [`*`node_id`* 开始`](mysql-cluster-mgm-client-commands.html#ndbclient-start)

    [](<>)[](<>)

    使由标识的数据节点联机*`node_id`*（或所有数据节点）。

    `全部开始`仅适用于所有数据节点，不影响管理节点。

    重要的

    要使用此命令使数据节点联机，数据节点必须已使用[`--nostart`](mysql-cluster-programs-ndbd.html#option_ndbd_nostart)要么`-n`.

-   [](<>) [`*`node_id`* 状态`](mysql-cluster-mgm-client-commands.html#ndbclient-status)

    [](<>)[](<>)

    显示由标识的数据节点的状态信息*`node_id`*（或所有数据节点）。

    可能的节点状态值包括`未知`, `没有联系`, `没有开始`, `开始`, `开始`, `SHUTTING_DOWN`， 和`重新启动`.

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

-   [](<>) [`*`node_id`* 停止 [-a] [-f]`](mysql-cluster-mgm-client-commands.html#ndbclient-stop)

    [](<>)[](<>)

    停止由标识的数据或管理节点*`node_id`*.

    笔记

    `全部停止`仅用于停止所有数据节点，不影响管理节点。

    受此命令影响的节点与集群断开连接，其关联的[**ndbd**](mysql-cluster-programs-ndbd.html)要么[**数据库\_管理**](mysql-cluster-programs-ndb-mgmd.html)进程终止。

    这`-一种`选项导致节点立即停止，而无需等待任何未决事务的完成。

    一般，`停止`如果结果会导致集群不完整，则失败。这`-f`选项强制节点关闭而不检查。如果使用此选项并且结果是不完整的集群，则集群会立即关闭。

    警告

    的使用`-一种`选项还禁用安全检查，否则在以下情况下执行`停止`调用以确保停止节点不会导致不完整的集群。换句话说，您在使用`-一种`选项与`停止`命令，因为这个选项使得集群有可能经历强制关闭，因为它不再拥有存储在其中的所有数据的完整副本[`新开发银行`](mysql-cluster.html).

**附加命令。**中可用的许多其他命令[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户端在别处进行了描述，如下表所示：

-   [`开始备份`](mysql-cluster-backup-using-management-client.html)用于在[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户;这[`中止备份`](mysql-cluster-backup-using-management-client.html#ndbclient-abort-backup)命令用于取消正在进行的备份。有关详细信息，请参阅[第 23.6.8 节，“NDB Cluster 的在线备份”](mysql-cluster-backup.html).

-   这[`集群日志`](mysql-cluster-logging-management-commands.html)命令用于执行各种日志记录功能。看[第 23.6.3 节，“在 NDB 集群中生成的事件报告”](mysql-cluster-event-reports.html)，了解更多信息和示例。`节点调试`如本节前面所述，激活或停用节点日志中的调试打印输出。

-   对于测试和诊断工作，客户端支持[`倾倒`](https://dev.mysql.com/doc/ndb-internals/en/dump-commands.html)命令可用于在集群上执行内部命令。除非 MySQL 支持人员指示这样做，否则不应在生产环境中使用它。有关详细信息，请参阅[NDB 集群管理客户端 DUMP 命令](https://dev.mysql.com/doc/ndb-internals/en/dump-commands.html).
