### 23.2.4 NDB 集群中的新增功能

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

以下部分描述了与早期版本系列相比，MySQL NDB Cluster 8.0 到 8.0.29 中 NDB Cluster 实现的变化。NDB Cluster 8.0 作为通用可用性 (GA) 版本提供，从 NDB 8.0.19 开始。NDB Cluster 7.6 和 7.5 是以前的 GA 版本，仍然支持生产；有关 NDB Cluster 7.6 的信息，请参阅[NDB Cluster 7.6 中的新功能](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-6.html).有关 NDB Cluster 7.5 的类似信息，请参阅[NDB Cluster 7.5 中的新功能](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-what-is-new-7-5.html).NDB Cluster 7.4 和 7.3 是生产中仍支持的先前 GA 版本，尽管我们建议用于生产的新部署使用 NDB Cluster 8.0；看[MySQL NDB Cluster 7.3 和 NDB Cluster 7.4](https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster.html).

#### NDB Cluster 8.0 中的新功能

NDB Cluster 8.0 中可能感兴趣的主要更改和新功能显示在以下列表中：

-   **兼容性增强。**以下更改减少了长期存在的非本质差异`新开发银行`与其他 MySQL 存储引擎相比的行为：

    -   **与 MySQL 服务器并行开发。**从这个版本开始，MySQL NDB Cluster 正在与标准 MySQL 8.0 服务器并行开发，采用新的统一发布模型，具有以下特性：

        -   NDB 8.0 是在 MySQL 8.0 源代码树中开发、构建和发布的。

        -   NDB Cluster 8.0 版本的编号方案遵循 MySQL 8.0 的方案。

        -   构建源代码`新开发银行`支持追加`-簇`到返回的版本字符串[**mysql**](mysql.html) `-V`，如此处所示：

            ```
            $> mysql -V
            mysql  Ver 8.0.29-cluster for Linux on x86_64 (Source distribution)
            ```

             `新开发银行`二进制文件继续显示 MySQL 服务器版本和`新开发银行`引擎版本，像这样：

            ```
            $> ndb_mgm -V
            MySQL distrib mysql-8.0.29 ndb-8.0.29, for Linux (x86_64)
            ```

            在 MySQL Cluster NDB 8.0 中，这两个版本号始终相同。

            要构建具有 NDB Cluster 支持的 MySQL 8.0 源，请使用 CMake 选项[`-DWITH_NDBCLUSTER`](source-configuration-options.html#option_cmake_with_ndbcluster).

    -   **平台支持说明。**NDB 8.0 在平台支持方面进行了以下更改：

        -   `NDBCLUSTER`不再支持 32 位平台。从 NDB 8.0.21 开始，NDB 构建过程会检查系统架构，如果它不是 64 位平台，则会中止。

        -   现在可以建造`新开发银行`来自 64 位的源代码`手臂`CPU。目前，此支持仅限源代码，我们不为此平台提供任何预编译的二进制文件。

    -   **数据库和表名。**NDB 8.0 删除了以前对数据库和表标识符的 63 字节限制。这些标识符现在最多可以使用 64 个字节，就像使用其他 MySQL 存储引擎的对象一样。看[第 23.2.7.11 节，“NDB Cluster 8.0 中解决的以前的 NDB Cluster 问题”](mysql-cluster-limitations-resolved.html).

    -   **为外键生成的名称。**  `新开发银行`现在使用该模式`*`表*名称\`\*\_fk**`ñ`*`用于命名内部生成的外键。这类似于 [ 使用的模式`InnoDB\`](innodb-storage-engine.html)。

-   **模式和元数据分发和同步。**NDB 8.0 利用 MySQL 数据字典将架构信息分发到加入集群的 SQL 节点，并在现有 SQL 节点之间同步新的架构更改。以下列表描述了与此集成工作相关的各个增强功能：

    -   **模式分布增强。**这`新开发银行`处理模式操作并跟踪其进度的模式分发协调器已在 NDB 8.0 中进行了扩展，以确保在模式操作期间使用的资源在其结束时被释放。以前，其中一些工作是由模式分发客户端完成的；由于客户端并不总是拥有所有需要的状态信息这一事实已经改变，当客户端决定在完成之前放弃模式操作并且没有通知协调器时，这可能导致资源泄漏。

        为了帮助解决此问题，架构操作超时检测已从架构分发客户端移至协调器，从而为协调器提供了清理架构操作期间使用的任何资源的机会。协调器现在定期检查正在进行的模式操作是否超时，并在检测到超时时将尚未完成给定模式操作的参与者标记为失败。每当发生架构操作超时时，它还会提供适当的警告。（应该注意，在检测到这样的超时之后，模式操作本身会继续。）每当这些操作中的一个或多个正在进行时，通过定期打印活动模式操作列表来完成附加报告。

        作为这项工作的附加部分，一个新的[**mysqld**](mysqld.html)选项[`--ndb-schema-dist-timeout`](mysql-cluster-options-variables.html#option_mysqld_ndb-schema-dist-timeout)可以设置等待模式操作被标记为已超时的时间长度。

    -   **磁盘数据文件分发。**NDB Cluster 8.0.14，使用 MySQL 数据字典来确保磁盘数据文件和相关结构（如表空间和日志文件组）在所有连接的 SQL 节点之间正确分布。

    -   **表空间对象的模式同步。**当 MySQL 服务器作为 SQL 节点连接到 NDB 集群时，它会根据在`新开发银行`字典。

        此前，唯一`新开发银行`在连接新 SQL 节点时同步的对象是数据库和表；MySQL NDB Cluster 8.0 还实现了磁盘数据对象的模式同步，包括表空间和日志文件组。除了其他好处之外，这消除了 MySQL 数据字典和 MySQL 数据字典不匹配的可能性。`新开发银行`本机备份和还原后的字典，其中表空间和日志文件组已还原到`新开发银行`字典，但不是 MySQL 服务器的数据字典。

        也无法再发出[`创建表`](create-table.html)引用不存在的表空间的语句。这样的语句现在失败并出现错误。

    -   **数据库 DDL 同步增强功能。**为 NDB 8.0 所做的工作确保了新加入（或重新加入）的 SQL 节点与现有 SQL 节点上的数据库同步现在可以正确使用数据字典，以便任何数据库级操作（[`创建数据库`](create-database.html),[`更改数据库`](alter-database.html)， 要么[`删除数据库`](drop-database.html))现在，当该SQL节点连接（或重新连接）到集群时，该节点上可能被误用的数据已正确复制。

        作为启动时执行的架构同步过程的一部分，SQL节点现在会将集群数据节点上的所有数据库与其自己的数据字典中的数据库进行比较，如果发现SQL节点的数据字典中缺少任何数据库，SQL节点会通过执行[`创建数据库`](create-database.html)陈述这样创建的数据库使用默认的MySQL服务器数据库属性（例如由[`字符集数据库`](server-system-variables.html#sysvar_character_set_database)和[`整理数据库`](server-system-variables.html#sysvar_collation_database))在执行语句时在此SQL节点上有效的。

    -   **NDB元数据更改检测和同步。**NDB 8.0实现了一种新的机制，用于通过MySQL数据字典检测数据对象（如表、表空间和日志文件组）的元数据更新。这是通过一个线程完成的`NDB`元数据更改监视器线程，该线程在后台运行，并定期检查`NDB`字典和MySQL数据字典。

        默认情况下，监视器每60秒执行一次元数据检查。轮询间隔可以通过设置[`ndb_元数据_检查_间隔`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_check_interval)系统变量；通过设置[`ndb_元数据_检查`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_check)系统变量到`关`.状态变量[`Ndb_元数据_检测到_计数`](mysql-cluster-options-variables.html#statvar_Ndb_metadata_detected_count)显示自[**mysqld**](mysqld.html)上次启动时发现不一致。

        `NDB`确保`NDB`元数据更改监视器线程在启动后的操作期间提交的数据库、表、日志文件组和表空间对象将自动检查是否不匹配，并由`NDB`binlog线程。

        NDB 8.0添加了两个与自动同步相关的状态变量：[`Ndb_元数据_同步_计数`](mysql-cluster-options-variables.html#statvar_Ndb_metadata_synced_count)显示自动同步的对象数；[`Ndb_元数据_排除_计数`](mysql-cluster-options-variables.html#statvar_Ndb_metadata_excluded_count)指示同步失败的对象数（在NDB 8.0.22之前，此变量命名为`Ndb_元数据_黑名单_大小`)。此外，您可以通过查看群集日志来查看哪些对象已同步。

        设定[`ndb_元数据_同步`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_sync)系统变量为`符合事实的`覆盖已为其设置的所有设置[`ndb_元数据_检查_间隔`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_check_interval)和[`ndb_元数据_检查`](mysql-cluster-options-variables.html#sysvar_ndb_metadata_check)，导致更改监视器线程开始进行连续元数据更改检测。

        在NDB 8.0.22及更高版本中，设置`ndb_元数据_同步`到`符合事实的`清除之前同步失败的对象列表，这意味着不再需要发现单个表或通过将SQL节点重新连接到群集来重新触发同步。此外，将此变量设置为`错误的`清除等待重试的对象列表。

        从NDB 8.0.21开始，添加到MySQL性能模式的两个新表提供了有关自动同步当前状态的更详细信息，而不是从日志消息或状态变量中获得的信息。下面列出了这些表格：

        -   [`ndb_同步_挂起_对象`](performance-schema-ndb-sync-pending-objects-table.html)：包含有关数据库对象的信息，已检测到数据库对象之间存在不匹配`NDB`字典和MySQL数据字典（尚未排除在自动同步之外）。

        -   [`ndb_同步_排除的_对象`](performance-schema-ndb-sync-excluded-objects-table.html)：包含有关`NDB`由于无法在数据库之间同步而被排除的数据库对象`NDB`字典和MySQL数据字典，因此需要手动干预。

            其中一个表中的一行提供数据库对象的父模式、名称和类型。对象的类型包括模式、表空间、日志文件组和表。（如果对象是日志文件组或表空间，则父模式为`无效的`）此外[`ndb_同步_排除的_对象`](performance-schema-ndb-sync-excluded-objects-table.html)表显示了对象被排除的原因。

            这些桌子只有在`NDBCLUSTER`存储引擎支持已启用。有关这些表的更多信息，请参阅[第27.12.12节，“性能模式NDB集群表”](performance-schema-ndb-cluster-tables.html).

    -   [](<>)**NDB表中的更改增加了额外的元数据。**属性的额外元数据属性`NDB`表用于存储MySQL数据字典中的序列化元数据，而不是像以前的版本那样存储表的二进制表示形式。（这是一个`.frm`文件，不再由MySQL服务器使用请参见[第14章，*MySQL数据字典*](data-dictionary.html)）作为支持此更改的工作的一部分，表的额外元数据的可用大小已增加。这意味着`NDB`在NDB Cluster 8.0中创建的表与以前的NDB Cluster版本不兼容。在早期版本中创建的表可以与NDB 8.0一起使用，但不能在早期版本中打开。

        可以使用NDB API方法访问此元数据[`getExtraMetadata（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-getextrametadata)和[`setExtraMetadata（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-setextrametadata).

        有关更多信息，请参阅[第23.3.7节，“NDB集群升级和降级”](mysql-cluster-upgrade-downgrade.html).

    -   **使用即时升级表。frm文件。**在NDB 7.6及更早版本中创建的表包含压缩格式的元数据`.frm`文件，MySQL 8.0不再支持该文件。为了便于在线升级到NDB 8.0，`NDB`执行此元数据的即时翻译，并将其写入MySQL服务器的数据字典，从而启用[**mysqld**](mysqld.html)在NDB Cluster 8.0中，在不阻止以前版本的`NDB`软件

        重要的

        一旦在NDB 8.0中修改了表的结构，它的元数据就会使用数据字典存储，NDB 7.6及更早版本将无法再访问它。

        此增强功能还可以恢复`NDB`使用早期版本备份到运行NDB 8.0（或更高版本）的群集。

    -   **元数据一致性检查错误日志记录。**作为之前在NDB 8.0中所做工作的一部分，元数据检查是作为数据库表示之间自动同步的一部分执行的`NDB`NDB字典中的表及其在MySQL数据字典中的对应表包括表的名称、存储引擎和内部ID。从NDB 8.0.23开始，检查的属性范围扩大到包括以下数据对象的属性：

        -   柱

        -   索引

        -   外键

            此外，元数据属性中任何不匹配的详细信息现在都会写入MySQL服务器错误日志。错误日志消息使用的格式略有不同，这取决于是在表级别还是在列、索引或外键级别发现差异。表级属性不匹配导致的日志错误的格式如下所示，其中*`所有物`*是物业名称，*`ndb_值`*是存储在NDB字典中的属性值，并且*`mysqld_值`*存储在MySQL数据字典中的属性值：

        ```
        Diff in 'property' detected, 'ndb_value' != 'mysqld_value'
        ```

        对于列、索引和外键的属性不匹配，格式如下，其中*`obj_型`*是其中之一`柱`, `指数`或`外键`和*`obj_名称`*是对象的名称：

        ```
        Diff in obj_type 'obj_name.property' detected, 'ndb_value' != 'mysqld_value'
        ```

        元数据检查是在数据的自动同步过程中执行的`NDB`当表安装在任何数据库的数据字典中时[**mysqld**](mysqld.html)充当NDB集群中的SQL节点。如果[**mysqld**](mysqld.html)在调试编译时，每当[`创建表格`](create-table.html)语句执行时`NDB`桌子打开了。

-   **用户权限与NDB的同步\_存储\_使用者**NDB 8.0中提供了一种在SQL节点之间共享和同步用户、角色和权限的新机制，使用[`NDB_存储用户`](privileges-provided.html#priv_ndb-stored-user)特权NDB 7.6及更早版本中实现的分布式权限（参见[使用共享授权表的分布式权限](https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-privilege-distribution.html))不再受支持。

    在SQL节点上创建用户帐户后，用户及其权限可以存储在`NDB`因此，通过发出[`授予`](grant.html)像这样的声明：

    ```
    GRANT NDB_STORED_USER ON *.* TO 'jon'@'localhost';
    ```

    `NDB_存储用户`始终具有全局范围，并且必须使用`在**`.系统保留帐户，如`mysql。session@localhost`或`mysql。infoschema@localhost`无法分配此权限。

    还可以通过发出适当的命令在SQL节点之间共享角色`授予NDB_存储用户`陈述将这样的角色分配给用户不会导致用户被共享；这个`NDB_存储用户`特权必须明确授予每个用户。

    用户或角色`NDB_存储用户`，以及它的特权，在所有SQL节点加入给定的NDB集群后立即与它们共享。可以从任何连接的SQL节点进行此类更改，但推荐的做法是仅从指定的SQL节点进行更改，因为无法保证影响不同SQL节点权限的语句在所有SQL节点上的执行顺序相同。

    在NDB 8.0.27之前，对用户或角色权限的更改会立即与所有连接的SQL节点同步。从MySQL 8.0.27开始，SQL节点在更新privieges时会使用全局读取锁，这可以防止多个SQL节点执行的并发更改导致死锁。

    **升级的影响。**由于MySQL服务器权限系统的变化（请参阅[第6.2.3节“拨款表”](grant-tables.html))，使用`NDB`存储引擎在NDB 8.0中无法正常工作。保留在NDB 7.6或更早版本中创建的特权表是安全的，但没有必要，但它们不再用于访问控制。在NDB 8.0中[**mysqld**](mysqld.html)充当SQL节点并在中检测此类表`NDB`将警告写入MySQL服务器日志，并创建[`InnoDB`](innodb-storage-engine.html)阴影表本身；这样的影子表是在每个连接到集群的MySQL服务器上创建的。从NDB 7.6或更早版本执行升级时，特权表使用`NDB`可以使用[**ndb\_滴\_桌子**](mysql-cluster-programs-ndb-drop-table.html)一旦所有充当SQL节点的MySQL服务器升级（请参阅[第23.3.7节，“NDB集群升级和降级”](mysql-cluster-upgrade-downgrade.html)).

    这个[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)公用事业公司[`--还原特权表`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-privilege-tables)该选项已被弃用，但在NDB 8.0中仍将继续使用，并且仍然可以用于将NDB Cluster早期版本中备份的分布式特权表恢复到运行NDB 8.0的群集。这些表格按上一段所述进行处理。

    共享用户和授权存储在`ndb_sql_元数据`桌子，哪个[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)默认情况下，不会在NDB 8.0中恢复；您可以指定[`--包括存储的补助金`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_include-stored-grants)选择让它这么做。

    看见[第23.6.12节，“特权同步和NDB\_存储\_用户“](mysql-cluster-privilege-synchronization.html)，以获取更多信息。

-   **信息\_模式更改。**在中显示有关磁盘数据文件的信息时进行了以下更改[`信息模式。文件夹`](information-schema-files-table.html)表：

    -   表空间和日志文件组不再在`文件夹`桌子（这些构造实际上不是文件。）

    -   现在，每个数据文件都由数据库中的一行表示`文件夹`桌子现在，每个撤消日志文件在该表中也仅用一行表示。（以前，每个数据节点上的每个文件副本都会显示一行。）

        此外`信息模式`表中现在填充了MySQL集群表的表空间统计信息。（错误#27167728）

-   **ndb的错误信息\_佩罗。**反对者`--ndb`选择[**佩罗尔**](perror.html)已被删除。相反，使用[**ndb\_佩罗尔**](mysql-cluster-programs-ndb-perror.html)要从中获取错误消息信息，请执行以下操作：`NDB`错误代码。（臭虫81704，臭虫81705，臭虫23523926，臭虫23523957）

-   **条件下推增强。**以前，条件下推仅限于谓词项，这些谓词项指的是条件被推送到的同一个表中的列值。在NDB 8.0中，这个限制被删除，这样查询计划中早期表中的列值也可以从推送条件中引用。NDB 8.0支持连接比较列表达式，以及同一表中的列之间的比较。要比较的列和列表达式必须是完全相同的类型；这意味着，只要这些属性适用，它们也必须具有相同的符号性、长度、字符集、精度和比例。

    向下推条件的较大部分可以让数据节点过滤掉更多的行，从而减少需要过滤的行数[**mysqld**](mysqld.html)必须在连接处理期间处理。这些增强的另一个好处是，过滤可以在LDM线程中并行执行，而不是在SQL节点上的单个mysqld进程中执行；这有可能显著提高查询性能。

    正在比较的列值之间的类型兼容性的现有规则将继续适用（请参见[第8.2.1.5节，“发动机工况下推优化”](engine-condition-pushdown-optimization.html)).

    这些额外的改进在NDB 8.0.21中进行：

    -   MySQL优化器通过转换`不存在`和`不在`查询（见[第8.2.2.1节，“使用半连接转换优化IN和EXISTS子查询谓词”](semijoins.html))可以通过`NDB`.

        当表上没有未推送的条件，并且查询满足任何其他必须满足的条件才能向下推送外部联接时，可以执行此操作。

    -   `NDB`在尝试从附加到的表中检索任何行之前，尝试标识和计算非依赖标量子查询。当它可以这样做时，获得的值将作为推送条件的一部分使用，而不是使用提供该值的子查询。

        从NDB 8.0.27开始，作为推送查询的一部分推送的条件现在可以引用同一推送查询中祖先表中的列，但需满足以下条件：

    -   推送条件可能包括任何比较运算符[`<`](comparison-operators.html#operator_less-than), [`<=`](comparison-operators.html#operator_less-than-or-equal), [`>`](comparison-operators.html#operator_greater-than), [`>=`](comparison-operators.html#operator_greater-than-or-equal), [`=`](comparison-operators.html#operator_equal)和[`<>`](comparison-operators.html#operator_not-equal).

    -   要比较的值必须是相同的类型，包括长度、精度和比例。

    -   `无效的`根据ISO SQL标准规定的比较语义执行处理；与之相比`无效的`返回`无效的`.

        考虑使用这里所示的语句创建的表：

    ```
    CREATE TABLE t (
        x INT PRIMARY KEY,
        y INT
    ) ENGINE=NDB;
    ```

    诸如[`在a.x=0和b.y>5上选择*从t作为左连接t作为b`](select.html)现在可以使用发动机条件下推优化来下推条件列`y`.

    看见[第8.2.1.5节，“发动机工况下推优化”](engine-condition-pushdown-optimization.html)，以获取更多信息。

    NDB API方法[`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-eq-param), [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-ne-param), [`分支机构col_lt_param（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-lt-param), [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-le-param), [`分支机构col gt param（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-gt-param)和[`分支机构col_ge_param（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-ge-param)作为这项工作的一部分，NDB 8.0.27中添加了。这些[`NDB解释代码`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html)可用于将列值与参数值进行比较。

    此外[`NdbScanFilter:：cmp_param（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html#ndb-ndbscanfilter-cmp-param)NDB 8.0.27中也添加了，可以定义列值和参数值之间的比较，以用于执行扫描。

-   **增加最大行大小。**NDB 8.0增加了存储在数据库中的最大字节数`NDBCLUSTER`表从14000字节到30000字节。

    A.[`斑点`](blob.html)或[`文本`](blob.html)列继续使用总数中的264字节，与之前一样。

    固定宽度列的最大偏移量`NDB`表是8188字节；这与以前的版本相同。

    看见[第23.2.7.5节，“NDB集群中与数据库对象相关的限制”](mysql-cluster-limitations-database-objects.html)，以获取更多信息。

-   **ndb_mgm SHOW命令和单用户模式。**在NDB 8.0中，当群集处于单用户模式时，管理客户端的输出[`显示`](mysql-cluster-mgm-client-commands.html#ndbclient-show)命令指示此模式生效时哪个API或SQL节点具有独占访问权限。

-   **在线栏目更名。**一列列`NDB`现在可以使用`算法=就地`看见[第23.6.11节，“NDB集群中使用ALTER TABLE的在线操作”](mysql-cluster-online-operations.html)，以获取更多信息。

-   **改进的ndb_mgmd启动时间。**在NDB 8.0中，管理节点守护程序的启动时间已通过以下方式得到显著改进：

    -   由于替换了以前使用的列表数据结构`ndb_mgmd`为了使用哈希表处理配置数据中的节点属性，管理服务器的总启动时间减少了6倍或更多。

    -   此外，如果数据和SQL节点主机名不在管理服务器的`主人`文件在群集配置文件中使用，[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)启动时间可以比以前缩短20倍。

-   **NDB API增强。**  [`NdbScanFilter:：cmp（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html#ndb-ndbscanfilter-cmp)以及几种比较方法[`NDB解释代码`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html)现在可以用来相互比较表列值。受影响的`NDB解释代码`方法如下：

    -   [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-eq)

    -   [`分公司`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-ge)

    -   [`分公司`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-gt)

    -   [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-le)

    -   [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-lt)

    -   [`分支机构`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbinterpretedcode.html#ndb-ndbinterpretedcode-branch-col-ne)

        对于刚才列出的所有方法，要比较的表列值必须是完全匹配的类型，包括长度、精度、符号性、比例、字符集和排序规则（如适用）。

        有关更多信息，请参见各个API方法的描述。

-   **脱机多线程索引生成。**现在可以指定一组内核，用于执行有序索引的脱机多线程构建的I/O线程，而不是文件I/O、压缩或解压缩等常规I/O任务。在此上下文中，“脱机”指的是在父表未被写入时执行的有序索引的构建；这样的建筑发生在`NDB`群集执行节点或系统重新启动，或作为使用从备份中恢复群集的一部分[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--重建索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_rebuild-indexes).

    此外，脱机索引构建工作的默认行为被修改为使用所有可用于[**ndbmtd**](mysql-cluster-programs-ndbmtd.html)，而不是将其自身局限于为I/O线程保留的核心。这样做可以缩短重启和恢复时间，提高性能、可用性和用户体验。

    此增强功能的实施方式如下：

    1.  的默认值[`BuildIndexThreads`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-buildindexthreads)从0更改为128。这意味着离线有序索引构建现在默认情况下是多线程的。

    2.  的默认值[`TwoPassInitialNodeRestartCopy`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-twopassinitialnoderestartcopy)从`错误的`到`符合事实的`。这意味着，初始节点重启首先将所有数据从“活动”节点复制到正在启动的节点，而不创建任何索引。离线创建有序索引，然后再次将其数据与活动节点同步，即同步两次，并在两次同步之间离线创建索引。这会使初始节点重启的行为更像节点的正常重启，并减少构建索引所需的时间。

    3.  一种新型螺纹(`idxbld`)是为[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)配置参数，以允许将脱机索引生成线程锁定到特定CPU。

        此外`NDB`现在区分了用户可以访问的线程类型`ThreadConfig`根据这两个标准：

    4.  该线程是否为执行线程。类型的线程`主要的`, `ldm`, `记录`, `代表`, `tc`和`邮寄`是执行线程；螺纹类型`木卫一`, `监察人`和`idxbld`不是。

    5.  将线程分配给给定任务是永久的还是临时的。目前，除了`idxbld`它们是永久的。

        有关其他信息，请参阅手册中所示参数的说明。（臭虫#25835748，臭虫#26928111）

-   **logbuffers表备份进程信息。**执行NDB备份时[`恩宾福。日志缓冲区`](mysql-cluster-ndbinfo-logbuffers.html)表现在显示了每个数据节点上备份进程使用缓冲区的信息。这被实现为反映两种新日志类型的行，除了`重做`和`DD-UNDO`。其中一行具有日志类型`备份数据`，显示备份过程中用于将片段复制到备份文件的数据缓冲区的数量。另一行具有日志类型`备份日志`，它显示备份期间用于记录备份开始后所做更改的日志缓冲区数量。一个一个`对数型`行显示在`日志缓冲区`集群中每个数据节点的表。只有在NDB备份当前正在进行时，表中才会出现具有这两种日志类型的行。（臭虫#25822988）

-   **恩宾福。在Windows上处理表。**由在Windows平台上使用的监视进程的进程ID[`重新启动`](restart.html)产生并重新启动[**mysqld**](mysqld.html)现在显示在[`过程`](mysql-cluster-ndbinfo-processes.html)表作为`安琪儿`.

-   **字符串哈希改进。**在NDB 8.0之前，所有字符串哈希都是基于首先将字符串转换为规范化形式，然后MD5哈希生成的二进制图像。这可能会导致一些性能问题，原因如下：

    -   规范化字符串始终填充到其全长。暂时[`瓦尔查尔`](char.html)，这通常需要添加比原始字符串中的字符更多的空格。

    -   字符串库没有针对这种空间填充进行优化，这在某些用例中增加了相当大的开销。

    -   字符集之间的填充语义各不相同，其中一些字符集没有填充到其完整长度。

    -   即使没有空格填充，转换后的字符串也可能变得相当大；一些Unicode 9.0排序规则可以将单个代码点转换为100字节或更多的字符数据。

    -   随后的MD5散列主要由空格填充组成，效率不高，可能会刷新一级缓存的重要部分，从而导致额外的性能损失。

        排序规则提供了自己的散列函数，该函数直接散列字符串，而无需首先创建规范化字符串。此外，对于Unicode 9.0排序规则，计算哈希时不使用填充。`NDB`现在，只要使用Unicode 9.0排序规则对标识为的字符串进行哈希运算，就可以利用这个内置函数。

        因为，对于其他排序规则，现有数据库在转换的字符串上进行哈希分区，`NDB`继续使用前面的方法对使用这些方法的字符串进行哈希，以保持兼容性。（臭虫89590，臭虫89604，臭虫89609，臭虫27515000，臭虫27523758，臭虫27522732）

-   **重置主控更改。**因为MySQL服务器现在执行[`重置主机`](reset-master.html)使用全局读锁时，此语句与NDB Cluster一起使用时的行为在以下两个方面发生了变化：

    -   它不再保证是统一的；这就是说，现在有可能是一个读数出现在`重置主机`在二进制日志旋转之前，可能不会记录发出的。

    -   它现在的行为方式完全相同，无论该语句是在写入二进制日志的同一SQL节点上发出的，还是在同一集群中的不同SQL节点上发出的。

    笔记

    [`显示BINLOG事件`](show-binlog-events.html), [`刷新日志`](flush.html#flush-logs)，并且大多数数据定义语句都会继续，就像在前面的语句中一样`NDB`版本，以同步方式运行。

-   **ndb\_恢复选项使用。**那个[`--诺代德`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_nodeid)和[`--备份`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backupid)现在，在调用时，两个选项都是必需的[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html).

-   **ndb\_日志\_垃圾箱默认。**NDB 8.0更改[`ndb_log_bin`](mysql-cluster-options-variables.html#sysvar_ndb_log_bin)系统变量来自`符合事实的`到`错误的`.

-   **动态事务资源分配。**事务协调器中的资源分配现在使用动态内存池执行。这意味着资源分配由数据节点配置参数决定，例如[`MaxDmloperationsPertTransaction`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxdmloperationspertransaction), [`MaxNoOfConcurrentIndexOperations`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofconcurrentindexoperations), [`MaxNoOfConcurrentOperations`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofconcurrentoperations), [`MaxNoOfConcurrentScans`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofconcurrentscans), [`MaxNoOfConcurrentTransactions`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnoofconcurrenttransactions), [`MaxNoOffifiedTriggers`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooffiredtriggers), [`MaxNoolocalScans`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxnooflocalscans)和[`事务缓冲存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactionbuffermemory)现在，如果这些参数中的每一个表示的负载都在所有此类资源的目标负载范围内，则可以限制这些资源中的其他资源，以免超过可用的总资源。

    作为这项工作的一部分，几个新的数据节点参数控制[`DBTC`](https://dev.mysql.com/doc/ndb-internals/en/ndb-internals-kernel-blocks-dbtc.html)添加了以下内容：

    -   [`保留的ConcurrentIndexOperations`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedconcurrentindexoperations)

    -   [`预留现金操作`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedconcurrentoperations)

    -   [`ReservedConcurrentScans`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedconcurrentscans)

    -   [`ReservedConcurrentTransactions`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedconcurrenttransactions)

    -   [`ReservedFiredTriggers`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedfiredtriggers)

    -   [`ReservedLocalScans`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedlocalscans)

    -   [`ReservedTransactionBufferMemory`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-reservedtransactionbuffermemory).

        有关详细信息，请参阅刚刚列出的参数说明。

-   **每个数据节点使用多个 LDM 进行备份。**  `新开发银行`现在可以使用多个本地数据管理器 (LDM) 在单个数据节点上以并行方式执行备份。（以前，备份是跨数据节点并行完成的，但在数据节点进程中始终是串行的。）不需要特殊语法[`开始备份`](mysql-cluster-backup-using-management-client.html)命令在[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户端启用此功能，但所有数据节点必须使用多个 LDM。这意味着数据节点必须正在运行[**ndbmtd**](mysql-cluster-programs-ndbmtd.html)([**ndbd**](mysql-cluster-programs-ndbd.html)是单线程的，因此总是只有一个 LDM），并且在进行备份之前必须将它们配置为使用多个 LDM；您可以通过为多线程数据节点配置参数之一选择适当的设置来做到这一点[`MaxNoOfExecutionThreads`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-maxnoofexecutionthreads)要么[`线程配置`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig).

    使用多个 LDM 的备份会创建子目录，每个 LDM 一个，位于`备份/备份-*`备份 ID`*/`目录。[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)现在自动检测这些子目录，如果它们存在，则尝试并行恢复备份；看见[第23.5.23.3节，“从并行备份中恢复”](ndb-restore-parallel-data-node-backup.html)，以获取详细信息。（单线程备份的恢复方式与以前版本的相同。）`NDB`）还可以使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)通过修改通常的恢复过程，从以前版本的NDB集群中获取二进制文件；[第23.5.23.3.2节，“串行恢复并行备份”](ndb-restore-parallel-data-node-backup.html#ndb-restore-parallel-backup-serial)，提供了有关如何执行此操作的信息。

    通过设置[`启用多线程备份`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-enablemultithreadedbackup)中的所有数据节点的数据节点参数设置为0`[ndbd默认值]`群集全局配置文件的一部分(`配置。伊尼`).

-   **二进制配置文件增强。**NDB 8.0为管理服务器的二进制配置文件使用了一种新格式。以前，集群配置文件中最多可以出现16381个部分；现在最大的区段数是4G。这是为了支持集群中比此更改之前更多的节点。

    升级到新格式是相对无缝的，而且应该很少需要手动干预，因为管理服务器仍然能够毫无问题地读取旧格式。从NDB 8.0降级到旧版本的NDB群集软件需要手动删除任何二进制配置文件，或者使用[`--首字母`](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_initial)选项

    有关更多信息，请参阅[第23.3.7节，“NDB集群升级和降级”](mysql-cluster-upgrade-downgrade.html).

-   **数据节点数量增加。**NDB 8.0将每个集群支持的最大数据节点数增加到144个（以前是48个）。数据节点现在可以使用范围为1到144（含144）的节点ID。

    以前，管理节点的推荐节点ID为49和50。管理节点仍然支持这些节点，但这样使用它们将数据节点的最大数量限制为142个；因此，现在建议将节点ID 145和146用于管理节点。

    作为这项工作的一部分，数据节点使用的格式`系统文件`已更新至第2版。该文件记录每个节点的最后一个全局检查点索引、重启状态和节点组成员身份等信息（请参阅）[NDB群集数据节点文件系统目录](https://dev.mysql.com/doc/ndb-internals/en/ndb-internals-ndbd-filesystemdir-files.html)).

-   **RedoOvermitCounter和RedoOvermitLimit更改。**由于将它们设置为0的语义不明确，每个数据节点配置参数的最小值[`氧化还原计数器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitcounter)和[`氧化还原极限`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-redoovercommitlimit)已增加到1。

-   **ndb\_自动增量\_预取\_sz变了。**的默认值[`ndb_自动增量_预取_sz`](mysql-cluster-options-variables.html#sysvar_ndb_autoincrement_prefetch_sz)服务器系统变量增加到512。

-   **参数最大值和默认值的更改。**NDB 8.0对配置参数的最大值和默认值进行了以下更改：

    -   最大的[`数据存储器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-datamemory)增加到16 TB。

    -   最大的[`DiskPageBufferMemory`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-diskpagebuffermemory)也增加到16 TB。

    -   的默认值[`StringMemory`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-stringmemory)提高到 25%。

    -   默认为[`LcpScanProgressTimeout`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-lcpscanprogresstimeout)增加到 180 秒。

-   **磁盘数据检查点改进。**NDB Cluster 8.0 提供了许多新的增强功能，在使用固态驱动器等非易失性内存设备和此类设备的 NVMe 规范时，有助于减少磁盘数据表和表空间检查点的延迟。这些改进包括以下列表中的改进：

    -   避免检查点磁盘写入的爆发

    -   当重做日志或撤消日志已满时加快磁盘数据表空间的检查点

    -   必要时平衡磁盘检查点和内存检查点

    -   保护磁盘设备免于过载，以帮助确保高负载下的低延迟

        作为这项工作的一部分，添加了两个数据节点配置参数。[`MaxDiskDataLatency`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-maxdiskdatalatency)对磁盘访问允许的延迟程度设置了上限，并导致花费超过此时间长度的事务被中止。[`DiskDataUsingSameDisk`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-diskdatausingsamedisk)通过提高执行此类表空间的检查点的速率，可以利用将磁盘数据表空间存放在单独的磁盘上。

        此外，三个新表[`ndbinfo`](mysql-cluster-ndbinfo.html)数据库提供有关磁盘数据性能的信息：

    -   这[`磁盘统计`](mysql-cluster-ndbinfo-diskstat.html)table 报告过去一秒内对磁盘数据表空间的写入

    -   这[`diskstats_1sec`](mysql-cluster-ndbinfo-diskstats-1sec.html)表报告最近 20 秒内每一秒对磁盘数据表空间的写入

    -   这[`pgman_time_track_stats`](mysql-cluster-ndbinfo-pgman-time-track-stats.html)表报告与磁盘数据表空间相关的磁盘操作延迟

-   **内存分配和 TransactionMemory。**一个新的[`事务内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactionmemory)参数简化了为事务分配数据节点内存，作为池事务和本地数据管理器 (LDM) 内存的工作的一部分。此参数旨在替换已弃用的几个旧事务内存参数。

    现在可以通过此处列出的三种方式中的任何一种来设置事务内存：

    -   几个配置参数不兼容[`事务内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactionmemory).如果设置了其中任何一个，`事务内存`不能设置（见[与 TransactionMemory 不兼容的参数](mysql-cluster-ndbd-definition.html#mysql-cluster-transactionmemory-incompatible))，并且数据节点的事务内存被确定为在 NDB 8.0 之前。

        笔记

        试图设置`事务内存`和任何这些参数同时在`配置文件`文件阻止管理服务器启动。

    -   如果`事务内存`已设置，此值用于确定事务内存。`事务内存`如果上一项中提到的任何不兼容参数也已设置，则无法设置。

    -   如果没有设置任何不兼容的参数并且`事务内存`也没有设置，事务内存由`新开发银行`.

        有关详细信息，请参阅[`事务内存`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-transactionmemory)， 也[第 23.4.3.13 节，“数据节点内存管理”](mysql-cluster-data-node-memory-management.html).

-   **支持额外的片段副本。**NDB 8.0 将生产中支持的最大片段副本数从两个增加到四个。（以前可以设置[`副本数`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-noofreplicas)到 3 或 4，但这并未在测试中得到官方支持或验证。）

-   **通过切片恢复。**从 NDB 8.0.20 开始，可以将备份分成大致相等的部分（切片），并使用为[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)：

    -   [`--num-slices`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices)确定备份应分成的片数。

    -   [`--slice-id`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_slice-id)提供当前实例要恢复的切片的 ID[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html).

        这使得可以使用多个实例[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)以并行还原备份的子集，从而可能减少执行还原操作所需的时间。

        有关详细信息，请参阅[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--num-slices`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_num-slices)选项。

-   **从启用的任何片段副本读取。**默认情况下，所有片段都启用从任何​​片段副本读取`新开发银行`表。这意味着默认值[`ndb_read_backup`](mysql-cluster-options-variables.html#sysvar_ndb_read_backup)系统变量现在为 ON，并且`NDB_TABLE`评论选项`READ_BACKUP`创建新的时为 1`新开发银行`桌子。启用从任何​​片段副本读取可显着提高从`新开发银行`表，对写入的影响最小。

    有关详细信息，请参阅[`ndb_read_backup`](mysql-cluster-options-variables.html#sysvar_ndb_read_backup)系统变量，和[第 13.1.20.11 节，“设置 NDB 评论选项”](create-table-ndb-comment-options.html).

-   **数据库\_斑点\_工具增强。**从 NDB 8.0.20 开始，[**数据库\_斑点\_工具**](mysql-cluster-programs-ndb-blob-tool.html)实用程序可以检测存在内联部分的缺失 blob 部分，并用正确长度的占位符 blob 部分（由空格字符组成）替换这些部分。要检查是否缺少 blob 部分，请使用[`--检查缺失`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_check-missing)该程序的选项。要用占位符替换任何丢失的 blob 部分，请使用[`--添加缺失`](mysql-cluster-programs-ndb-blob-tool.html#option_ndb_blob_tool_add-missing)选项。

    有关详细信息，请参阅[第 23.5.6 节，“ndb\_斑点\_工具 - 检查和修复 NDB 集群表的 BLOB 和 TEXT 列”](mysql-cluster-programs-ndb-blob-tool.html).

-   **ndbinfo 版本控制。**  `新开发银行`8.0.20 及更高版本支持版本控制[`ndbinfo`](mysql-cluster-ndbinfo.html)表，并在内部维护其表的当前定义。启动时，`新开发银行`比较其支持`ndbinfo`version 与存储在数据字典中的版本。如果版本不同，`新开发银行`丢弃任何旧的`ndbinfo`表并使用当前定义重新创建它们。

-   **支持 Fedora Linux。**从 NDB 8.0.20 开始，Fedora Linux 是 NDB Cluster Community 版本的受支持平台，可以使用 Oracle 为此目的提供的 RPM 进行安装。这些可以从[NDB 集群下载页面](https://dev.mysql.com/downloads/cluster/).

-   **NDB 程序——NDBT 依赖删除。**多个依赖`新开发银行`上的实用程序`NDBT`库已被删除。该库用于内部开发，正常使用不需要；将其包含在这些程序中可能会导致测试时出现不必要的问题。

    此处列出了受影响的程序，以及`新开发银行`删除依赖项的版本：

    -   [**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)

    -   [**数据库\_删除\_全部**](mysql-cluster-programs-ndb-delete-all.html)

    -   [**数据库\_显示\_表**](mysql-cluster-programs-ndb-show-tables.html)（新开发银行 8.0.20）

    -   [**数据库\_服务员**](mysql-cluster-programs-ndb-waiter.html)（新开发银行 8.0.20）

        此更改对用户的主要影响是这些程序不再打印`NDBT_ProgramExit - *`状态`*`运行完成后。应更新依赖于此类行为的应用程序以反映升级到指定版本时的更改。

-   **外连接和半连接的下推。**NDB 8.0.20 中完成的工作允许将许多外连接和半连接，而不仅仅是使用主键或唯一键查找的那些，下推到数据节点（参见[第 8.2.1.5 节，“发动机工况下推优化”](engine-condition-pushdown-optimization.html)）。

    现在可以推送的使用扫描的外连接包括满足以下条件的外连接：

    -   桌面上没有未推动的条件

    -   同一个连接嵌套中的其他表或它所依赖的上连接嵌套中没有未推送的条件

    -   同一连接嵌套或它所依赖的上连接嵌套中的所有其他表也被推送

        使用索引扫描的半连接现在可以被推送，如果它满足刚刚提到的推送外连接的条件，并且它使用`第一场比赛`策略（见[第 8.2.2.1 节，“使用半连接转换优化 IN 和 EXISTS 子查询谓词”](semijoins.html)）。

        当无法推送连接时，[`解释`](explain.html)应提供理由或理由。

-   **外键和字母大小写。**  [`新开发银行`](mysql-cluster.html)使用定义外键的大小写存储外键的名称。以前，当[`lower_case_table_names`](server-system-variables.html#sysvar_lower_case_table_names)系统变量设置为 0，它执行外键名称区分大小写的比较，如[`选择`](select.html)和其他具有存储名称的 SQL 语句。从 NDB 8.0.20 开始，这种比较现在总是以不区分大小写的方式执行，而不管`lower_case_table_names`.

-   **多个运输机。**NDB 8.0.20 引入了对多个传输器的支持，以处理数据节点对之间的节点到节点通信。这有助于集群中每个节点组的更新操作率更高，并有助于避免系统或其他限制对使用单个套接字的节点间通信施加的限制。

    默认，`新开发银行`现在使用基于本地数据管理 (LDM) 线程数或事务协调器 (TC) 线程数的传输器数量，以较大者为准。默认情况下，传输器的数量等于该数量的一半。虽然默认值对于大多数工作负载应该表现良好，但可以通过设置每个节点组使用的传输器数量来调整[`节点组传输器`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-nodegrouptransporters)数据节点配置参数（也在 NDB 8.0.20 中引入），最大 LDM 线程数或 TC 线程数中的较大者。将其设置为 0 会导致传输器的数量与 LDM 线程的数量相同。

-   **数据库\_restore：主键架构更改。**NDB 8.0.21（及更高版本）在还原时支持源表和目标表的不同主键定义`新开发银行`本机备份与[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)当它与[`--allow-pk-changes`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes)选项。支持增加和减少组成原始主键的列数。

    当主键扩展了一个或多个附加列时，添加的任何列都必须定义为`非空`，并且在进行备份期间不得更改任何此类列中的值。因为某些应用程序在更新行时会设置一行中的所有列值，无论是否所有值都实际更改，这可能会导致还原操作失败，即使要添加到主键的列中的值没有更改。您可以使用[`--ignore-extended-pk-updates`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_ignore-extended-pk-updates)NDB 8.0.21 中还添加了选项；在这种情况下，您必须确保没有更改此类值。

    无论该列是否仍然是表的一部分，都可以从表的主键中删除该列。

    有关详细信息，请参阅[`--allow-pk-changes`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_allow-pk-changes)选项[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html).

-   **使用 ndb 合并备份\_恢复。**在某些情况下，可能需要将最初存储在 NDB Cluster 的不同实例（都使用相同的模式）中的数据整合到单个目标 NDB Cluster 中。现在在使用在[**数据库\_毫克**](mysql-cluster-programs-ndb-mgm.html)客户（见[第 23.6.8.2 节，“使用 NDB Cluster Management Client 创建备份”](mysql-cluster-backup-using-management-client.html)) 并使用[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)， 使用[`--remap-column`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_remap-column)NDB 8.0.21 中添加的选项以及[`--恢复数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-data)（以及可能需要或需要的其他兼容选项）。`--remap-column`可用于处理源集群之间主键值和唯一键值重叠的情况，并且它们必须在目标集群中不重叠，以及保留表之间的其他关系，例如外键。

    [`--remap-column`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_remap-column)将具有以下格式的字符串作为其参数`*`D b`*.*`表`*.*`山口`*:*`fn`*:*`参数`*`， 在哪里*`D b`*,*`表`*， 和*`山口`*分别是数据库、表和列的名称，*`fn`*是重映射函数的名称，并且*`参数`*是一个或多个参数*`fn`*.没有默认值。仅有的`抵消`支持作为函数名，使用*`参数`*作为从备份将列插入目标表时应用于列值的整数偏移量。此列必须是其中之一[`INT`](integer-types.html)要么[`大整数`](integer-types.html);偏移值的允许范围与该类型的带符号版本相同（如果需要，这允许偏移为负数）。

    新选项可以在同一次调用中多次使用[**数据库\_恢复**](mysql-cluster-programs-ndb-restore.html)，以便您可以重新映射到同一个表、不同表或两者的多个列的新值。对于选项的所有实例，偏移值不必相同。

    此外，还提供了两个新选项[**数据库\_描述**](mysql-cluster-programs-ndb-desc.html)，也从NDB 8.0.21开始：

    -   [`--汽车公司`](mysql-cluster-programs-ndb-desc.html#option_ndb_desc_auto-inc)（缩写）`-a`)：如果表格中有`自动增量`柱

    -   [`--背景`](mysql-cluster-programs-ndb-desc.html#option_ndb_desc_context)（缩写）`-x`)：提供有关表的额外信息，包括架构、数据库名称、表名称和内部ID。

        有关更多信息和示例，请参阅[`--重新映射列`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_remap-column)选项

-   **发送线程改进。**从NDB 8.0.20开始，每个发送线程现在处理发送到一个子集的传输，每个块线程现在只协助一个发送线程，从而产生更多的发送线程，从而提高性能和数据节点的可伸缩性。

-   **采用自旋方法的自适应自旋控制。**使用[`旋转法`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-spinmethod)数据节点参数。此参数（添加在NDB 8.0.20中，功能从NDB 8.0.24开始）有四个设置，分别用于静态旋转、基于成本的自适应旋转、延迟优化的自适应旋转，以及针对每个线程都有自己CPU的数据库计算机优化的自适应旋转。这些设置中的每一个都会使数据节点对一个或多个自旋参数使用一组预定值，这些参数可以根据给定的场景进行自适应自旋、设置自旋定时和设置自旋开销，从而避免了直接为常见用例设置这些参数的需要。

    对于微调自旋行为，还可以使用现有的[`SchedulerSpinTimer`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-schedulerspintimer)数据节点配置参数以及以下参数[`倾倒`](https://dev.mysql.com/doc/ndb-internals/en/dump-commands.html)中的命令[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)客户：

    -   [`转储104000（设置调度程序PintTimeRall）`](https://dev.mysql.com/doc/ndb-internals/en/dump-command-104000.html)：设置所有线程的旋转时间

    -   [`转储104001（设置调度程序PintTimerThread）`](https://dev.mysql.com/doc/ndb-internals/en/dump-command-104001.html)：设置指定线程的旋转时间

    -   [`转储104002（设置允许的开销）`](https://dev.mysql.com/doc/ndb-internals/en/dump-command-104002.html)：将自旋开销设置为允许获得1单位延迟的CPU时间单位数

    -   [`转储104003（设置PintTimePerCall）`](https://dev.mysql.com/doc/ndb-internals/en/dump-command-104003.html)：设置呼叫旋转的时间

    -   [`转储104004（启用自适应计划）`](https://dev.mysql.com/doc/ndb-internals/en/dump-command-104004.html)：启用或禁用自适应旋转

        NDB 8.0.20还添加了一个新的TCP配置参数[`TcpSpinTime`](mysql-cluster-tcp-definition.html#ndbparam-tcp-tcpspintime)设置给定TCP连接的旋转时间。

        这个[**ndb\_顶部**](mysql-cluster-programs-ndb-top.html)该工具也得到了增强，可以提供每个线程的旋转时间信息。

        有关更多信息，请参阅的说明[`旋转法`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-spinmethod)参数，列出的`倾倒`命令，以及[第23.5.29节，“ndb\_顶部-查看NDB线程的CPU使用信息”](mysql-cluster-programs-ndb-top.html).

-   **磁盘数据和群集重新启动。**从NDB 8.0.21开始，集群的初始重启将强制删除所有磁盘数据对象，如表空间和日志文件组，包括与这些对象关联的任何数据文件和撤消日志文件。

    看见[第23.6.10节，“NDB群集磁盘数据表”](mysql-cluster-disk-data.html)，以获取更多信息。

-   **磁盘数据区分配。**从NDB 8.0.20开始，在给定表空间使用的所有数据文件中以循环方式分配数据文件中的数据块。在多个存储设备用于磁盘数据存储的情况下，这有望改善数据的分布。

    有关更多信息，请参阅[第23.6.10.1节，“NDB群集磁盘数据对象”](mysql-cluster-disk-data-objects.html).

-   **--ndb日志失败终止选项。**从NDB 8.0.21开始，当SQL节点无法完全记录所有行事件时，可以使其终止。这可以通过启动[**mysqld**](mysqld.html)和[`--ndb日志失败终止`](mysql-cluster-options-variables.html#option_mysqld_ndb-log-fail-terminate)选项

-   **AllowUnresolvedHostNames参数。**默认情况下，管理节点在无法解析全局配置文件中的主机名时拒绝启动，这在Kubernetes等某些环境中可能会出现问题。从NDB 8.0.22开始，可以通过设置[`AllowUnResolvedHostName`](mysql-cluster-tcp-definition.html#ndbparam-tcp-allowunresolvedhostnames)到`符合事实的`在`[tcp默认值]`群集全局混淆文件的部分(`配置。伊尼`文件）。这样做会导致此类错误被视为警告，并允许[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)继续开始

-   **Blob写入性能增强。**NDB 8.0.22实现了许多改进，在应用这些修改时，通过减少SQL或其他API节点与数据节点之间所需的往返次数，在同一行中修改多个blob列时，或在同一语句中修改包含blob列的多行时，可以实现更高效的批处理。许多人的表现[`插入`](insert.html), [`使现代化`](update.html)和[`删去`](delete.html)因此，陈述可以得到改进。此处列出了此类声明的示例，其中*`桌子`*是一个`NDB`包含一个或多个Blob列的表：

    -   `插入*`桌子`*值行（1*`blob\_值1`*, *`blob\_值2`*, ...)`，即插入包含一个或多个Blob列的行

    -   `插入*`桌子`*值行（1*`blob\_值1`*)，第（2）排*`blob\_值2`*)，第（3）排*`blob\_值3`*), ...`，即插入包含一个或多个Blob列的多行

    -   `更新*`桌子`*设定*`blob_column1`* = *`blob\_值1`*, *`blob\_专栏2`* = *`blob\_值2`*, ...`

    -   `更新*`桌子`*设定*`blob\_柱`* = *`blob\_值`*在哪里*`主键列`*在(*`价值清单`*)`，其中主键列不是Blob类型

    -   `删除*`桌子`*在哪里*`主键列`* = *`价值`*`，其中主键列不是Blob类型

    -   `删除*`桌子`*在哪里*`主键列`*在(*`价值清单`*)`，其中主键列不是Blob类型

        其他SQL语句也可能受益于这些改进。其中包括[`加载数据填充`](load-data.html)和[`创建表格。。。选择`](create-table-select.html)此外[`改变桌子*`桌子`*引擎=NDB`](alter-table.html)哪里*`桌子`*使用存储引擎而不是`NDB`在执行语句之前，也可以更高效地执行。

        此增强适用于影响MySQL类型列的语句[`斑点`](blob.html), [`中绿叶`](blob.html), [`长条`](blob.html), [`文本`](blob.html), [`中文本`](blob.html)和[`长文`](blob.html).更新的声明[`TINYBLOB`](blob.html)或[`TINYTEXT`](blob.html)仅列（或两种类型）不受这项工作的影响，它们的性能不应发生变化。

        由于某些SQL语句需要扫描表Blob列，这会破坏批处理，因此这种增强并没有显著提高它们的性能。此类声明包括下列类型的声明：

    -   [`选自*`桌子`*[哪里*`关键字栏`*在(*`blob\_值\_列表`*)]`](select.html)，其中通过匹配主键或使用Blob类型的唯一键列来选择行

    -   `更新*`桌子`*设定*`blob\_柱`* = *`blob\_值`*在哪里*`条件`*`，使用*`条件`*它不依赖于唯一的值

    -   `删除*`桌子`*在哪里*`条件`*`要删除包含一个或多个Blob列的行，请使用*`条件`*它不依赖于唯一的值

    -   复制品`改变桌子`已使用`NDB`执行语句之前的存储引擎，其行在执行语句之前或之后包含一个或多个Blob列（或两者都包含）

        为了充分利用这一改进，您可能希望增加用于[`--ndb批量大小`](mysql-cluster-options-variables.html#option_mysqld_ndb-batch-size)和[`--ndb blob写入批处理字节`](mysql-cluster-options-variables.html#option_mysqld_ndb-blob-write-batch-bytes)选择[**mysqld**](mysqld.html)，以尽量减少修改BLOB所需的往返次数。对于复制，还建议您启用[`从站\u允许\u批处理`](mysql-cluster-options-variables.html#sysvar_slave_allow_batching)系统变量，它将副本群集应用EPOC事务所需的往返次数降至最低。

-   **节点。js更新。**从NDB 8.0.22开始`NDB`节点的适配器。js是使用12.18.3版本构建的，现在只支持该版本（或Node.js的更高版本）。

-   **加密备份。**NDB 8.0.22增加了对使用AES-256-CBC加密的备份文件的支持；这是为了防止数据从未授权方访问的备份中恢复。加密后，备份数据由用户提供的密码保护。密码可以是由最多256个字符组成的任意字符串，这些字符来自可打印ASCII字符范围，而不是`!`, `'`, `"`, `$`, `%`, `\`和`^`.用户或应用程序必须保留用于加密任何给定NDB群集备份的密码；`NDB`不保存密码。密码可以为空，但不建议这样做。

    在进行NDB群集备份时，可以使用`加密密码=*`暗语`*`与管理客户[`启动备份`](mysql-cluster-backup-using-management-client.html)命令MGM API的用户还可以通过调用[`ndb_mgm_启动_备份4（）`](https://dev.mysql.com/doc/ndbapi/en/mgm-functions-backup.html#mgm-ndb-mgm-start-backup4).

    可以使用[**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html)在8.0.22版本中添加到NDB集群分发中的实用程序；这个程序也可以用来解密加密的备份文件。此外[**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html)可以压缩备份文件，也可以使用NDB Cluster在[`压缩备份`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-compressedbackup)配置参数设置为1。

    要从加密备份中恢复，请使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)有选择吗[`--解密`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt)和[`--备份密码`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_backup-password)。这两个选项都是必需的，如果备份未加密，则恢复同一备份所需的任何其他选项也是必需的。[**ndb\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html)和[**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html)还可以分别使用，`-P` *`暗语`*和[`--解密密码=*`暗语`*`](mysql-cluster-programs-ndbxfrm.html#option_ndbxfrm_decrypt-password).

    在所有提供密码以及加密或解密选项的情况下，必须引用密码；您可以使用单引号或双引号来分隔密码。

    从NDB 8.0.24开始，有几个`NDB`这里列出的程序也支持从标准输入输入密码，这与以交互方式登录时的方式类似[**mysql**](mysql.html)使用[`--密码`](mysql-command-options.html#option_mysql_password)选项（不包括命令行上的密码）：

    -   对于[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)和[**ndb\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html)这个[`--stdin的备份密码`](mysql-cluster-programs-ndb-print-backup-file.html#option_ndb_print_backup_file_backup-password-from-stdin)选项允许以安全的方式输入密码，类似于[**mysql**](mysql.html)客户的[`--密码`](mysql-command-options.html#option_mysql_password)选项对于[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)，将该选项与[`--解密`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_decrypt)选项对于[**ndb\_打印\_备份\_文件**](mysql-cluster-programs-ndb-print-backup-file.html)，使用该选项代替`-P`选项

    -   对于[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)选择[`--stdin的备份密码`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_backup-password-from-stdin)，与[`--执行“启动备份”[*`选项`*]"`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_execute)用于从系统外壳启动群集备份。

    -   二[**ndbxfrm**](mysql-cluster-programs-ndbxfrm.html)选项，[`--从stdin加密密码`](mysql-cluster-programs-ndbxfrm.html#option_ndbxfrm_encrypt-password-from-stdin)和[`--从stdin解密密码`](mysql-cluster-programs-ndbxfrm.html#option_ndbxfrm_decrypt-password-from-stdin)，在使用该程序加密或解密备份文件时会导致类似行为。

        有关更多信息，请参阅刚才列出的程序说明。

        从NDB 8.0.22开始，还可以通过设置[`RequireEncryptedBackup=1`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-requireencryptedbackup)在`[ndbd默认值]`群集全局配置文件的节。完成后[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)客户端拒绝执行未加密备份的任何尝试。

        从NDB 8.0.24开始，您可以[**ndb\_米高梅**](mysql-cluster-programs-ndb-mgm.html)在创建备份时使用加密[`--加密备份`](mysql-cluster-programs-ndb-mgm.html#option_ndb_mgm_encrypt-backup)。在这种情况下，在调用时会提示用户输入密码[`启动备份`](mysql-cluster-backup-using-management-client.html)如果没有提供。

-   **IPv6支持。**从NDB 8.0.22开始，到管理和数据节点的连接支持IPv6寻址；这包括管理节点和带有SQL节点的数据节点之间的连接。配置群集时，可以使用数字IPv6地址、解析为IPv6地址的主机名或两者。

    要使IPv6寻址工作，部署群集的操作平台和网络必须支持IPv6。与使用IPv4寻址时一样，操作平台必须提供IPv6地址的主机名解析。

    IPv4寻址仍然受到`NDB`。不建议同时使用IPv4和IPv6地址，但可在以下情况下使用：

    -   当管理节点配置了IPv6，数据节点配置了IPv4地址时`配置。伊尼`文件：如果[`--绑定地址`](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_bind-address)不用于**管理节点**，数据节点以[`--ndb连接字符串`](mysql-cluster-programs-ndbd.html#option_ndbd_ndb-connectstring)设置为管理节点的IPv4地址。

    -   当管理节点配置了IPv4，数据节点配置了IPv6地址时`配置。伊尼`：与另一种情况类似，如果[`--绑定地址`](mysql-cluster-programs-ndb-mgmd.html#option_ndb_mgmd_bind-address)不是传给**管理节点**数据节点从[`--ndb连接字符串`](mysql-cluster-programs-ndbd.html#option_ndbd_ndb-connectstring)设置为管理节点的IPv6地址。

        这些案例之所以有效，是因为[**ndb\_管理节点**](mysql-cluster-programs-ndb-mgmd.html)默认情况下不绑定到任何IP地址。

        要从的版本执行升级`NDB`如果网络支持IPv4和IPv6，则首先执行软件升级，则不支持IPv6寻址的网络将不支持IPv6寻址到支持IPv6寻址的网络；完成此操作后，您可以更新中使用的IPv4地址`配置。伊尼`包含IPv6地址的文件。在此之后，为了使配置更改生效，并使群集开始使用IPv6地址，需要执行群集的系统重启。

-   **自动安装程序弃用和删除。**MySQL NDB Cluster自动安装程序基于web的安装工具([**ndb\_设置。py**](mysql-cluster-programs-ndb-setup-py.html))在NDB 8.0.22中被弃用，在NDB 8.0.23及更高版本中被删除。它不再受到支持。

-   **ndbmemcache的弃用和删除。**  `ndbmemcache`不再受支持。`ndbmemcache`在NDB 8.0.22中被弃用，并在NDB 8.0.23中删除。

-   **ndbinfo备份\_id表。**NDB 8.0.24增加了[`备份id`](mysql-cluster-ndbinfo-backup-id.html)餐桌[`恩宾福`](mysql-cluster-ndbinfo.html)信息数据库。这是为了替代通过使用[**ndb\_选择\_全部的**](mysql-cluster-programs-ndb-select-all.html)转储内部文件的内容`SYSTAB_0`tyable，它容易出错，执行时间过长。

    此表只有一列和一行，其中包含使用[`启动备份`](mysql-cluster-backup-using-management-client.html)管理客户端命令。如果找不到此群集的备份，则该表包含一行，其列值为`0`.

-   **表分区增强。**NDB 8.0.23引入了一种处理表分区和片段的新方法，它可以独立于重做日志部分的数量来确定给定数据节点的本地数据管理器（LDM）的数量。这意味着LDM的数量现在可以高度可变。[`NDB`](mysql-cluster.html)当[`分类碎片`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-classicfragmentation)数据节点配置参数也在NDB 8.0.23中实现，设置为`错误的`; 在这种情况下，LDM的数量不再用于确定每个数据节点要为一个表创建多少个分区，以及[`分区节点`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-partitionspernode)参数（也在NDB 8.0.23中引入）决定了这个数字，它也用于计算表中使用的片段数。

    什么时候`分类碎片`有它的默认值`符合事实的`，然后使用LDM数的传统方法来确定表应该包含的片段数。

    有关更多信息，请参阅前面提到的新参数的说明，在中[多线程配置参数（ndbmtd）](mysql-cluster-ndbd-definition.html#mysql-cluster-ndbd-definition-ndbmtd-parameters).

-   **术语更新。**为了配合MySQL 8.0.21和NDB 8.0.21中开始的工作，NDB 8.0.23对术语进行了一些更改，如下所示：

    -   系统变量[`ndb_奴隶_冲突_角色`](mysql-cluster-options-variables.html#sysvar_ndb_slave_conflict_role)现在已经不推荐了。它被替换为[`ndb_冲突_角色`](mysql-cluster-options-variables.html#sysvar_ndb_conflict_role).

    -   许多的`NDB`不推荐使用状态变量。下表显示了这些变量及其替换项：

        [](<>)

        **表23.1弃用的NDB状态变量及其替换**

        | 弃用变量 | 替换 |
        | ---- | --- |
        | [`Ndb_api_自适应_发送_延迟_计数_从站`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_deferred_count_slave) | [`Ndb_api_自适应_发送_延迟_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_deferred_count_replica) |
        | [`Ndb_api_自适应_发送_强制_计数_从站`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_forced_count_slave) | [`Ndb_api_自适应_发送_强制_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_forced_count_replica) |
        | [`Ndb_api_自适应_发送_非受迫_计数_从站`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_unforced_count_slave) | [`Ndb_api_自适应_发送_非受迫_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_adaptive_send_unforced_count_replica) |
        | [`Ndb_api_字节_接收_计数_从站`](mysql-cluster-options-variables.html#statvar_Ndb_api_bytes_received_count_slave) | [`Ndb_api_字节_接收_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_bytes_received_count_replica) |
        | [`Ndb_api_字节_发送_计数_从站`](mysql-cluster-options-variables.html#statvar_Ndb_api_bytes_sent_count_slave) | [`Ndb_api_字节_发送_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_bytes_sent_count_replica) |
        | [`Ndb_api_pk_op_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_pk_op_count_slave) | [`Ndb_api_pk_op_count_复制品`](mysql-cluster-options-variables.html#statvar_Ndb_api_pk_op_count_replica) |
        | [`Ndb_api_删减_扫描_计数_从属`](mysql-cluster-options-variables.html#statvar_Ndb_api_pruned_scan_count_slave) | [`Ndb_api_删减_扫描_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_pruned_scan_count_replica) |
        | [`Ndb_api_范围_扫描_计数_从属`](mysql-cluster-options-variables.html#statvar_Ndb_api_range_scan_count_slave) | [`Ndb_api_范围_扫描_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_range_scan_count_replica) |
        | [`Ndb_api_read_row_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_read_row_count_slave) | [`Ndb\u api\u读取\u行\u计数\u副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_read_row_count_replica) |
        | [`Ndb\u api\u扫描\u批次\u计数\u从机`](mysql-cluster-options-variables.html#statvar_Ndb_api_scan_batch_count_slave) | [`Ndb\u api\u扫描\u批量\u计数\u复制`](mysql-cluster-options-variables.html#statvar_Ndb_api_scan_batch_count_replica) |
        | [`Ndb\u api\u表\u扫描\u计数\u从机`](mysql-cluster-options-variables.html#statvar_Ndb_api_table_scan_count_slave) | [`Ndb_api_表_扫描_计数_副本`](mysql-cluster-options-variables.html#statvar_Ndb_api_table_scan_count_replica) |
        | [`Ndb_api_trans_abort_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_abort_count_slave) | [`Ndb_api_trans_abort_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_abort_count_replica) |
        | [`Ndb_api_trans_close_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_close_count_slave) | [`Ndb_api_trans_close_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_close_count_replica) |
        | [`Ndb_api_trans_commit_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_commit_count_slave) | [`Ndb_api_trans_commit_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_commit_count_replica) |
        | [`Ndb_api_trans_local_read_row_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_local_read_row_count_slave) | [`Ndb_api_trans_local_read_row_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_local_read_row_count_replica) |
        | [`Ndb_api_trans_start_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_start_count_slave) | [`Ndb_api_trans_start_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_trans_start_count_replica) |
        | [`Ndb_api_uk_op_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_uk_op_count_slave) | [`Ndb_api_uk_op_count_复制品`](mysql-cluster-options-variables.html#statvar_Ndb_api_uk_op_count_replica) |
        | [`Ndb_api_wait_exec_complete_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_exec_complete_count_slave) | [`Ndb_api_wait_exec_complete_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_exec_complete_count_replica) |
        | [`Ndb_api_wait_meta_request_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_meta_request_count_slave) | [`Ndb_api_wait_meta_request_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_meta_request_count_replica) |
        | [`Ndb_api_wait_Nano_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_nanos_count_slave) | [`Ndb_api_wait_Nano_count_复制品`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_nanos_count_replica) |
        | [`Ndb_api_wait_scan_result_count_slave`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_scan_result_count_slave) | [`Ndb_api_wait_scan_result_count_replica`](mysql-cluster-options-variables.html#statvar_Ndb_api_wait_scan_result_count_replica) |
        | [`Ndb_slave_max_replicated_epoch`](mysql-cluster-options-variables.html#statvar_Ndb_slave_max_replicated_epoch) | [`Ndb_复制_最大_复制_纪元`](mysql-cluster-options-variables.html#statvar_Ndb_replica_max_replicated_epoch) |

        不推荐使用的状态变量将继续显示在的输出中[`显示状态`](show-status.html)，但应尽快更新应用程序，不再依赖它们，因为它们在未来的发行系列中的可用性不受保证。

    -   价值观`添加_TABLE _MASTER`和`添加_TABLE _SLAVE`之前在`选项卡\u复制\u状态`专栏`恩宾福` [`恩宾福。表_分布_状态`](mysql-cluster-ndbinfo-table-distribution-status.html)表已弃用。这些值分别替换为`添加表协调器`和`添加_表_参与者`.

    -   这个`--救命`某些产品的产量`NDB`客户端和实用程序，例如[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)已经修改过了。

-   **ThreadConfig增强功能。**自NDB 8.0.23起[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)参数已扩展为两种新的螺纹类型，如下所示：

    -   `查询`：查询线程（仅）在[`阅读承诺`](innodb-transaction-isolation-levels.html#isolevel_read-committed)询问。查询线程还充当恢复线程。查询线程的数量必须是LDM线程数量的0、1、2或3倍。0（默认值，除非使用[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)或[`自动线程配置`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-automaticthreadconfig)使LDM的行为与NDB 8.0.23之前相同。

    -   `恢复`：恢复线程从本地检查点检索数据。这样指定的恢复线程永远不会充当查询线程。

        也可以将现有的`主要的`和`代表`以两种方式之一执行线程：

    -   通过将这些参数中的任何一个设置为0，将其转换为单个线程。完成此操作后，生成的组合线程将显示名称`主要代表`在[`恩宾福。线程`](mysql-cluster-ndbinfo-threads.html)桌子

    -   连同`记录`通过设置`ldm`和`tc`设置为0，然后设置`记录`1。在本例中，组合的线程被命名为`主要代表`.

        此外，现有螺纹类型的最大数量也有所增加。下面列出了新的最大值，包括查询线程和恢复线程的最大值：

    -   LDM:332

    -   查询：332

    -   恢复：332

    -   TC:128

    -   接收：64

    -   发送：64

    -   主要新闻：2

        其他螺纹类型的最大值保持不变。

        此外，由于与这项任务有关的工作，`NDB`现在，当使用32个以上的块线程时，使用互斥来保护作业缓冲区。虽然这可能会导致性能略有下降（大多数情况下为1%至2%），但它也会显著减少超大配置所需的内存量。例如，在NDB 8.0.23之前使用2GB作业缓冲内存的64个线程的设置，在NDB 8.0.23及更高版本中应该只需要大约1GB。在我们的测试中，这导致在执行非常复杂的查询时，整体性能提高了5%。

        有关更多信息，请参阅的说明[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)参数和[`恩宾福。线程`](mysql-cluster-ndbinfo-threads.html)桌子

-   **ThreadConfig线程数更改。**根据NDB 8.0.30中的工作结果，设置[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)需要包括`主要的`, `代表`, `记录`和`ldm`在`ThreadConfig`在本次和后续的NDB集群发布中，显式地使用值字符串。此外`计数=0`必须为每个线程类型（的）显式设置`主要的`, `代表`或`ldm`)这是不可使用的，设置`计数=1`用于复制线程(`代表`)还需要设置`计数=1`对于`主要的`.

    这些变化可能会对使用该参数的NDB集群的升级产生重大影响；看见[第23.3.7节，“NDB集群升级和降级”](mysql-cluster-upgrade-downgrade.html)，以获取更多信息。

-   **ndbmtd线程自动配置。**从NDB 8.0.23开始，可以使用[**ndbmtd**](mysql-cluster-programs-ndbmtd.html)配置参数[`自动线程配置`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-automaticthreadconfig).当此参数设置为1时，`NDB`根据应用程序可用的处理器数量，为所有线程支持的线程类型（包括新的线程类型）自动设置线程分配`查询`和`恢复`上一项中描述的螺纹类型。如果系统不限制处理器数量，您可以通过设置[`努麦克普斯`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-numcpus)（也添加到NDB 8.0.23中）。否则，自动线程配置最多可容纳1024个CPU。

    无论设置了什么值，都会自动进行线程配置[`ThreadConfig`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-threadconfig)或[`MaxNoofExecutionReads`](mysql-cluster-ndbd-definition.html#ndbparam-ndbmtd-maxnoofexecutionthreads)在里面`配置。伊尼`; 这意味着不需要设置这两个参数中的任何一个。

    此外，NDB 8.0.23还实现了一些新功能[`恩宾福`](mysql-cluster-ndbinfo.html)信息数据库表提供有关硬件和CPU可用性的信息，以及用户的CPU使用情况`NDB`数据节点。下面列出了这些表格：

    -   [`cpudata`](mysql-cluster-ndbinfo-cpudata.html)

    -   [`cpudata_1sec`](mysql-cluster-ndbinfo-cpudata-1sec.html)

    -   [`cpudata_20sec`](mysql-cluster-ndbinfo-cpudata-20sec.html)

    -   [`cpudata_50ms`](mysql-cluster-ndbinfo-cpudata-50ms.html)

    -   [`cpuinfo`](mysql-cluster-ndbinfo-cpuinfo.html)

    -   [`hwinfo`](mysql-cluster-ndbinfo-hwinfo.html)

        NDB集群支持的每个平台上都不能使用其中一些表；有关更多信息，请参见它们的单独描述。

-   **NDB数据库对象的层次视图。**那个[`dict_obj_树`](mysql-cluster-ndbinfo-dict-obj-tree.html)表，添加到`恩宾福`NDB 8.0.24中的信息数据库，可以提供多个数据库的分层和树状视图`NDB`数据库对象，包括以下内容：

    -   表和相关索引

    -   表空间和相关数据文件

    -   日志文件组和相关的撤消日志文件

        有关更多信息和示例，请参阅[第23.6.14.25节，“ndbinfo指令\_obj\_“树表”](mysql-cluster-ndbinfo-dict-obj-tree.html).

-   **索引统计功能增强。**NDB 8.0.24在指数统计计算方面实现了以下改进：

    -   以前仅从一个片段收集指数统计数据；这一点被改变了，这样外推就扩展到了额外的片段。

    -   用于非常小的表的算法已经得到了改进，例如那些只有很少几行的表，结果会被丢弃，因此对这些表的估计应该比以前更准确。

        从NDB 8.0.27开始，默认情况下会自动创建和更新索引统计表，[`IndexStatAutoCreate`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexstatautocreate)和[`IndexStatAutoUpdate`](mysql-cluster-ndbd-definition.html#ndbparam-ndbd-indexstatautoupdate)两者都默认为`1.`（启用）而不是`0`（已禁用），不再需要运行[`分析表`](analyze-table.html)更新统计数据。

        有关更多信息，请参阅[第23.6.13节，“NDB API统计计数器和变量”](mysql-cluster-ndb-api-statistics.html).

-   **还原操作期间NULL和NOT NULL之间的转换。**从NDB 8.0.26开始，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)可以支持恢复`无效的`列作为`非空`相反，使用下面列出的选项：

    -   恢复`无效的`列为`非空`，使用[`--有损转换`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_lossy-conversions)选项

        该列最初声明为`无效的`不得包含任何`无效的`排；如果是的话，[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)退出时出错。

    -   恢复`非空`列为`无效的`，使用[`--提升属性`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_promote-attributes)选项

        有关更多信息，请参阅所示设备的说明[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)选项。

-   **NdbScanFilter的SQL兼容空比较模式。**传统上，在进行比较时`无效的`, [`NdbScanFilter`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html)对待`无效的`等同于`无效的`（因此认为`NULL==NULL`成为`符合事实的`)。这与SQL标准规定的不同，SQL标准要求`无效的`回来`无效的`包括…在内`NULL==NULL`.

    以前，NDB API应用程序不可能覆盖这种行为；从NDB 8.0.26开始，您可以通过拨打[`NdbScanFilter:：setSqlCmpSemantics（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html#ndb-ndbscanfilter-setsqlcmpsemantics)在创建扫描过滤器之前。（因此，此方法始终作为类方法而不是实例方法调用。）这样做会导致下一个问题`NdbScanFilter`要创建以使用SQL兼容的`无效的`在实例的生存期内执行的所有比较操作的比较。您必须为每个对象调用该方法[`NdbScanFilter`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html)对象，该对象应使用符合SQL的比较。

    有关更多信息，请参阅[NdbScanFilter:：setSqlCmpSemantics（）](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbscanfilter.html#ndb-ndbscanfilter-setsqlcmpsemantics).

-   **NDB API的弃用。FRM文件方法。**MySQL 8.0和NDB 8.0不再使用`.FRM`用于存储表元数据的文件。因此，NDB API方法[`getFrmData（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-getfrmdata), [`getFrmLength（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-getfrmlength)和[`setFrm（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-setfrm)从NDB 8.0.27开始已弃用，并可能在未来的版本中删除。要读取和写入表元数据，请使用[`getExtraMetadata（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-getextrametadata)和[`setExtraMetadata（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-table.html#ndb-table-setextrametadata)相反

-   **首选IPv4或IPv6寻址。**NDB 8.0.26增加了[`首选版本`](mysql-cluster-tcp-definition.html#ndbparam-tcp-preferipversion)配置参数，用于控制DNS解析的寻址首选项。IPv4([`PreferIPVersion=4`](mysql-cluster-tcp-definition.html#ndbparam-tcp-preferipversion))这是默认值。由于NDB中的配置检索要求所有TCP连接的此首选项都相同，因此只应在`[tcp默认值]`群集全局配置的一部分(`配置。伊尼`)档案。

    看见[第23.4.3.10节，“NDB群集TCP/IP连接”](mysql-cluster-tcp-definition.html)，以获取更多信息。

-   **日志功能增强。**以前，NDB群集数据节点和管理节点日志的分析可能会受到以下事实的阻碍：不同的日志消息使用不同的格式，并且并非所有日志消息都包含时间戳。这些问题的部分原因是，日志记录是由许多不同的机制执行的，例如`printf`, `格式化输出`, `恩布特`和`ndbout_c`，超载`<<`接线员等等。

    我们通过在服务器上实现标准化来解决这些问题`事件记录器`机制，该机制已存在于`NDB`，并以中的时间戳开始每条日志消息`YYYY-MM-DD HH:MM:SS`总体安排

    看见[第23.6.3节，“NDB集群中生成的事件报告”](mysql-cluster-event-reports.html)，以获取有关NDB群集事件日志和`事件记录器`日志消息格式。

-   **复制ALTER TABLE改进。**从NDB 8.0.27开始，复制[`改变桌子`](alter-table.html)在`NDB`表比较了执行复制前后源表的片段提交计数。这允许执行该语句的SQL节点确定是否有任何并发写入活动被更改；如果是这样，那么SQL节点可以终止该操作。

    当检测到对正在更改的表进行并发写入时`改变桌子`语句被拒绝，在复制ALTER table期间检测到源表中的数据更改错误。Alter被中止以避免不一致([`ER_TABLE_DEF_已更改`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_table_def_changed))。停止alter操作，而不是允许它继续进行并发写入，有助于防止无声数据丢失或损坏。

-   **ndbinfo指数\_统计表。**NDB 8.0.28增加了[`指数统计`](mysql-cluster-ndbinfo-index-stats.html)表，它提供了有关NDB索引统计信息的基本信息。它主要用于内部测试，但也可以作为[**ndb\_指数\_斯达**](mysql-cluster-programs-ndb-index-stat.html).

-   **ndb\_导入——表选项。**NDB 8.0.28之前，[**ndb\_进口**](mysql-cluster-programs-ndb-import.html)始终将从CSV文件读取的数据导入一个表中，该表的名称源自正在读取的文件的名称。NDB 8.0.28增加了[`--桌子`](mysql-cluster-programs-ndb-import.html#option_ndb_import_table)选项（简称：`-t`)此程序可以直接指定目标表的名称，并重写以前的行为。

    对…的反抗行为[**ndb\_进口**](mysql-cluster-programs-ndb-import.html)保留以使用输入文件的基名称作为目标表的名称。

-   **ndb\_导入--缺少ai列选项。**从NDB 8.0.29开始，[**ndb\_进口**](mysql-cluster-programs-ndb-import.html)可以从包含空值的CSV文件中导入数据`自动增量`列，使用[`--缺少ai专栏`](mysql-cluster-programs-ndb-import.html#option_ndb_import_missing-ai-column)该版本中引入的选项。该选项可用于包含此类列的一个或多个表。

    为了使该选项起作用`自动增量`CSV文件中的列不得包含任何值。否则，导入操作将无法继续。

-   **ndb\_恢复——使用“应用状态”选项。**从NDB 8.0.29开始，可以恢复`ndb_应用_状态`一张桌子`NDB`备份，使用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html)和[`--具有应用状态`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_with-apply-status)该版本中添加了选项。要使用此选项，还必须使用[`--恢复数据`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-data)当调用[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html).

    `--具有应用状态`恢复文件的所有行`ndb_应用_状态`表中的行除外`服务器id=0`; 要还原此行，请使用[`--恢复纪元`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_restore-epoch)。有关更多信息，请参阅[ndb\_申请\_状态表](mysql-cluster-replication-schema.html#ndb-replication-ndb-apply-status)，如`--具有应用状态`选项

-   **SQL访问缺少索引的表。**NDB 8.0.29之前，当用户查询试图打开`NDB`表缺少索引或索引已损坏，MySQL服务器引发`NDB`错误[`4243`](https://dev.mysql.com/doc/ndbapi/en/ndb-error-codes-application-error.html#ndberrno-4243)（未找到索引）。当违反约束或丢失数据导致无法在数据库上恢复索引时，可能会出现这种情况`NDB`桌子，还有[**ndb\_恢复**](mysql-cluster-programs-ndb-restore.html) [`--禁用索引`](mysql-cluster-programs-ndb-restore.html#option_ndb_restore_disable-indexes)用于还原没有索引的数据。

    从NDB 8.0.29开始，针对`NDB`如果查询不使用任何缺少的索引，则缺少索引的表将成功。否则，查询将被拒绝[`ER_NOT_密钥文件`](https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html#error_er_not_keyfile).在这种情况下，你可以使用[`改变桌子。。。改变索引。。。看不见的`](alter-table.html#alter-table-index)防止MySQL优化器尝试使用索引，或使用适当的SQL语句删除索引（然后可能重新创建）。

-   **NDB API列表：：clear（）方法。**NDB API[`词典`](https://dev.mysql.com/doc/ndbapi/en/ndb-dictionary.html)方法[`listEvents（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-dictionary.html#ndb-dictionary-listevents), [`listIndexes（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-dictionary.html#ndb-dictionary-listindexes)和[`listObjects（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-dictionary.html#ndb-dictionary-listobjects)每个都需要引用一个[`列表`](https://dev.mysql.com/doc/ndbapi/en/ndb-list.html)空的对象。以前，重用现有的`列表`由于这个原因，这些方法中的任何一种都存在问题。NDB 8.0.29通过实现[`清除（）`](https://dev.mysql.com/doc/ndbapi/en/ndb-list.html#ndb-list-clear)从列表中删除所有数据的方法。

    作为这项工作的一部分`列表`类析构函数现在调用`列表：：clear（）`从列表中删除任何元素或属性之前。

-   **ndbinfo中的NDB字典表。**NDB 8.0.29在[`恩宾福`](mysql-cluster-ndbinfo.html)提供信息的数据库[`NdbDictionary`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbdictionary.html)之前需要使用[**ndb\_描述**](mysql-cluster-programs-ndb-desc.html), [**ndb\_选择\_全部的**](mysql-cluster-programs-ndb-select-all.html)，以及其他**NDB**实用程序。

    其中两个表实际上是视图。这个[`散列映射`](mysql-cluster-ndbinfo-hash-maps.html)表提供了有关用户使用的哈希映射的信息`NDB`; 这个[`文件夹`](mysql-cluster-ndbinfo-files.html)表显示了有关用于在磁盘上存储数据的文件的信息（请参阅[第23.6.10节，“NDB群集磁盘数据表”](mysql-cluster-disk-data.html)).

    剩下的六个`恩宾福`NDB 8.0.29中添加的表是基础表。这些表不隐藏，也不使用前缀命名`ndb$`。以下列出了这些表格，并对每个表格中表示的对象进行了说明：

    -   [`斑点`](mysql-cluster-ndbinfo-blobs.html)：Blob表格，用于存储[`斑点`](blob.html)和[`文本`](blob.html)柱

    -   [`字典和列`](mysql-cluster-ndbinfo-dictionary-columns.html)：列`NDB`桌子

    -   [`字典表`](mysql-cluster-ndbinfo-dictionary-tables.html): `NDB`桌子

    -   [`事件`](mysql-cluster-ndbinfo-events.html)：NDB API中的事件订阅

    -   [`外键`](mysql-cluster-ndbinfo-foreign-keys.html)：外键打开`NDB`桌子

    -   [`索引_列`](mysql-cluster-ndbinfo-index-columns.html)：索引打开`NDB`桌子

        NDB 8.0.29还对`恩宾福`存储引擎实现主键以提高与[`NdbDictionary`](https://dev.mysql.com/doc/ndbapi/en/ndb-ndbdictionary.html).

-   **ndbcluster线程，性能模式。**截至NDB 8.0.29，`ndbcluster`插件线程显示在性能模式中[`线程`](performance-schema-threads-table.html)和[`设置线程`](performance-schema-setup-threads-table.html)表，从而可以获取有关这些线程性能的信息。三根线暴露在[`性能模式`](performance-schema.html)表列在这里：

    -   `ndb_binlog`：二进制日志线程

    -   `ndb_指数_统计`：索引统计线程

    -   `ndb_元数据`：元数据线程

        看见[第23.6.16节，“ndbcluster插件线程”](mysql-cluster-plugin-threads.html)，以获取更多信息和示例。

    MySQL Cluster Manager 1.4.8还为NDB Cluster 8.0提供了实验性支持。MySQL Cluster Manager具有高级命令行界面，可以简化许多复杂的NDB群集管理任务。看见[MySQL Cluster Manager 1.4.8用户手册](https://dev.mysql.com/doc/mysql-cluster-manager/1.4/en/)，以获取更多信息。
