Documentation Home

21.2.4.1 NDB Cluster 7.5 中的新功能

NDB Cluster 7.5 中的主要变化和新特性可能会引起人们的兴趣,如下表所示:

  • ndbinfo 增强功能。  数据库中进行了许多更改 ndbinfo,其中最主要的是它现在提供有关 NDB Cluster 节点配置参数的详细信息。

    config_params表已设为只读,并通过附加列进行了增强,这些列提供有关每个配置参数的信息,包括参数的类型、默认值、最大值和最小值(如果适用)、参数的简要说明以及是否参数是必需的。该表还为每个参数提供了唯一的 param_number.

    表中的一行config_values 显示具有指定 ID 的节点上给定参数的当前值。该参数由config_param列的值标识,该值映射到config_params 表的param_number.

    使用这种关系,您可以在这两个表上编写连接,以按名称获取一个或多个 NDB Cluster 配置参数的默认值、最大值、最小值和当前值。此处显示了使用此类连接的示例 SQL 语句:

    SELECT  p.param_name AS Name,
            v.node_id AS Node,
            p.param_type AS Type,
            p.param_default AS 'Default',
            p.param_min AS Minimum,
            p.param_max AS Maximum,
            CASE p.param_mandatory WHEN 1 THEN 'Y' ELSE 'N' END AS 'Required',
            v.config_value AS Current
    FROM    config_params p
    JOIN    config_values v
    ON      p.param_number = v.config_param
    WHERE   p. param_name IN ('NodeId', 'HostName','DataMemory', 'IndexMemory');

    有关这些更改的更多信息,请参阅 第 21.6.15.8 节,“ndbinfo config_params 表”。有关更多信息和示例, 请参阅 第 21.6.15.9 节,“ndbinfo config_values 表” 。

    此外,ndbinfo数据库不再依赖于MyISAM存储引擎。所有ndbinfo表和视图现在都使用NDB(显示为 NDBINFO)。

    ndbinfoNDB 7.5.4 中引入了 几个新表。此处列出了这些表格,并附有简要说明:

    有关详细信息,请参阅各个表的说明。

  • 默认行和列格式更改。 ROW_FORMAT从 NDB 7.5.1 开始,选项和 COLUMN_FORMAT选项 的默认值都 CREATE TABLE可以设置为 DYNAMIC而不是 , 作为此更改的一部分添加了FIXED使用新的 MySQL 服务器变量 ;ndb_default_column_format将其设置为 FIXEDor (或使用等效选项 DYNAMIC启动mysqld--ndb-default-column-format=FIXED)以强制将此值用于 COLUMN_FORMATand ROW_FORMAT。在 NDB 7.5.4 之前,此变量的默认值为DYNAMIC; 在此版本和更高版本中,默认值为 FIXED,它提供与先前版本的向后兼容性(缺陷号 24487363)。

    现有表格列使用的行格式和列格式不受此更改的影响。添加到此类表的新列使用这些的新默认值(可能被 覆盖ndb_default_column_format),并且现有列也更改为使用这些,前提是ALTER TABLE 执行此操作的语句指定 ALGORITHM=COPY

    笔记

    如果mysqld与 一起运行, ALTER TABLE则无法隐式完成 复制。 --ndb-allow-copying-alter-table=FALSE

  • ndb_binlog_index 不再依赖于 MyISAM。  从 NDB 7.5.2 开始,ndb_binlog_index NDB Cluster Replication 中使用的表现在使用 InnoDB存储引擎而不是MyISAM. 升级时,可以运行 mysql_upgrade with 使其 在该表上执行。为了向后兼容,仍支持 使用 此表。--force --upgrade-system-tablesALTER TABLE ... ENGINE=INNODBMyISAM

    此更改的一个好处是它可以依赖于此表的事务行为和无锁读取,这有助于缓解清除操作和日志轮换期间的并发问题,并提高此表的可用性。

  • ALTER TABLE 更改。  NDB Cluster 以前支持 online 的替代语法ALTER TABLE。这在 NDB Cluster 7.5 中不再受支持,它ALGORITHM = DEFAULT|COPY|INPLACE像在标准 MySQL 服务器中一样专用于表 DDL。

    影响此语句使用的另一个更改是, ALTER TABLE ... ALGORITHM=INPLACE RENAME 除了重命名之外,现在可能还包含 DDL 操作。

  • ExecuteOnComputer 参数已弃用。 管理节点数据节点API 节点ExecuteOnComputer配置参数 已被弃用,现在将在 NDB Cluster 的未来版本中删除。您应该对所有三种类型的节点使用等效参数。 HostName

  • 记录每键优化。  NDB 处理程序现在为 MySQL 5.7.5 中的优化器实现的索引统计信息使用 records-per-key 接口。此更改的一些好处包括此处列出的那些:

    • 在许多情况下,优化器现在会选择更好的执行计划,而以前会选择不太理想的连接索引或表连接顺序

    • 显示的行估计 EXPLAIN更准确

    • 显示的基数估计SHOW INDEX得到改进

  • 连接池节点 ID。  NDB 7.5.0 增加了mysqld --ndb-cluster-connection-pool-nodeids 选项,允许为连接池设置一组节点 ID。此设置覆盖 --ndb-nodeid,这意味着它还会覆盖 --ndb-connectstring选项和NDB_CONNECTSTRING环境变量。

    笔记

    您可以使用mysqld--ndb-cluster-connection-pool的 选项 设置连接池的大小 。

  • create_old_temporals 已删除。  系统create_old_temporals变量在 NDB Cluster 7.4 中已弃用,现在已被删除。

  • ndb_mgm 客户端提示命令。  NDB Cluster 7.5 添加了一个用于设置客户端命令行提示符的新命令。下面的例子说明了 PROMPT命令的使用:

    ndb_mgm> PROMPT mgm#1:
    mgm#1: SHOW
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     4 node(s)
    id=5    @10.100.1.1  (mysql-5.7.40-ndb-7.5.29, Nodegroup: 0, *)
    id=6    @10.100.1.3  (mysql-5.7.40-ndb-7.5.29, Nodegroup: 0)
    id=7    @10.100.1.9  (mysql-5.7.40-ndb-7.5.29, Nodegroup: 1)
    id=8    @10.100.1.11  (mysql-5.7.40-ndb-7.5.29, Nodegroup: 1)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=50   @10.100.1.8  (mysql-5.7.40-ndb-7.5.29)
    
    [mysqld(API)]   2 node(s)
    id=100  @10.100.1.8  (5.7.40-ndb-7.5.29)
    id=101  @10.100.1.10  (5.7.40-ndb-7.5.29)
    
    mgm#1: PROMPT
    ndb_mgm> EXIT
    jon@valhaj:/usr/local/mysql/bin>

    有关其他信息和示例,请参阅 第 21.6.1 节,“NDB Cluster Management Client 中的命令”

  • 增加了每个片段的 FIXED 列存储。  NDB Cluster 7.5 及更高版本支持列中每个数据片段最大 128 TB FIXED。在 NDB Cluster 7.4 及更早版本中,这是每个片段 16 GB。

  • 已弃用的参数已删除。  以下 NDB Cluster 数据节点配置参数在以前版本的 NDB Cluster 中已弃用,并在 NDB 7.5.0 中删除:

    • Id:在 NDB 7.1.9 中已弃用;替换为NodeId.

    • NoOfDiskPagesToDiskDuringRestartTUP, NoOfDiskPagesToDiskDuringRestartACC: 两者都已弃用,没有任何影响;在 MySQL 5.1.6 中替换为DiskCheckpointSpeedInRestart,它本身后来被弃用(在 NDB 7.4.1 中)并且现在也被删除。

    • NoOfDiskPagesToDiskAfterRestartACC, NoOfDiskPagesToDiskAfterRestartTUP: 都被弃用了,没有任何效果;在 MySQL 5.1.6 中替换为DiskCheckpointSpeed,它本身后来被弃用(在 NDB 7.4.1 中)并且现在也被删除。

    • ReservedSendBufferMemory: 已弃用,不再有任何影响。

    • MaxNoOfIndexes: archaic (pre-MySQL 4.1), 没有效果;早已被 MaxNoOfOrderedIndexes or 取代MaxNoOfUniqueHashIndexes

    • Discless: archaic (pre-MySQL 4.1) 的同义词,长期以来被 Diskless.

    ByteOrderNDB 7.5.0 中也删除了 陈旧且未使用的(因此之前也未记录)计算机配置参数。

    NDB 7.5 不支持刚刚描述的参数。现在尝试在 NDB Cluster 配置文件中使用这些参数中的任何一个都会导致错误。

  • DBTC 扫描增强功能。  扫描已通过减少用于 内核块DBTCDBDIH内核块 之间通信的信号数量得到改进,通过减少NDB扫描操作的 CPU 资源使用(在某些情况下估计减少了 5%)来提高用于扫描操作的数据节点的可扩展性.

    此外,由于这些更改,响应时间应该会大大缩短,这有助于防止主线程过载的问题。此外,在 BACKUP内核块中进行的扫描也得到了改进,并且比以前的版本更加高效。

  • JSON 列支持。  NDB 7.5.2 及更高版本支持表的 JSON列类型 NDB和 MySQL 服务器中的 JSON 函数,但要遵守一个 NDB表最多可以有 3 JSON列的限制。

  • 从任何片段副本读取;指定 hashmap 分区片段的数量。  以前,除简单读取外,所有读取都指向主片段副本。(简单读取是在读取行时锁定行的读取。)从 NDB 7.5.2 开始,可以从任何片段副本启用读取。默认情况下这是禁用的,但可以使用 ndb_read_backup此版本中添加的系统变量为给定的 SQL 节点启用。

    以前,可以定义只有一种分区映射类型的表,每个节点的每个 LDM 上有一个主分区,但在 NDB 7.5.2 中,可以通过设置分区平衡来更灵活地分配分区(片段计数类型)。可能的平衡方案是每个节点一个,每个节点组一个,每个节点每个 LDM 一个,每个节点组每个 LDM 一个。

    可以通过嵌入在注释 或 语句中的PARTITION_BALANCE选项(在 NDB 7.5.4 中重命名) 来控制单个表的此设置。使用此语法也支持表级设置。有关更多信息和示例,请参阅 第 13.1.18.9 节,“设置 NDB 注释选项”FRAGMENT_COUNT_TYPENDB_TABLECREATE TABLEALTER TABLEREAD_BACKUP

    在 NDB API 应用程序中,也可以使用为此目的提供的方法获取和设置表的分区平衡;有关这些的更多信息,请参阅 Table::getPartitionBalance()Table::setPartitionBalance()以及 Object::PartitionBalance

    作为这项工作的一部分,NDB 7.5.2 还引入了 ndb_data_node_neighbour 系统变量。这旨在用于在事务提示中为此 SQL 节点提供附近的”数据节点。

    此外,在恢复表模式时, ndb_restore --restore-meta现在使用目标集群的默认分区,而不是使用与从中获取备份的原始集群相同数量的分区。有关更多信息和示例, 请参阅 第 21.5.24.2.2 节,“恢复到比原始节点更多的节点” 。

    NDB 7.5.3 进一步增强了 READ_BACKUP: 在此版本和更高版本中,可以READ_BACKUP在线设置给定表作为 ALTER TABLE ... ALGORITHM=INPLACE ....

  • 线程配置改进。 ThreadConfigNDB 7.5.2 中针对多线程数据节点 ( ndbmtd ) 配置参数 实现了许多增强功能和功能添加 ,包括对更多平台的支持。这些变化在接下来的几段中描述。

    FreeBSD 和 Windows 现在支持非独占 CPU 锁定,使用cpubindcpuset. cpubind_exclusive使用此版本中引入的和 cpuset_exclusive参数, 独占 CPU 锁定现在(仅)在 Solaris 上受支持 。

    线程优先级现在可用,由新 thread_prio参数控制。 thread_prio在 Linux、FreeBSD、Windows 和 Solaris 上受支持,并且因平台而有所不同。有关详细信息,请参阅 的说明 ThreadConfig

    realtimeWindows 平台现在支持 该参数。

  • 大于 16 GB 的分区。  由于 NDB Cluster 数据节点使用的哈希索引实现的改进, NDB表的分区现在可能包含超过 16 GB 的固定列数据,并且固定列的最大分区大小现在提高到 128 TB。先前的限制是由于内核中的 DBACCNDB仅使用块中行的固定大小部分的 32 位引用 DBTUP,尽管对该数据的 45 位引用在 DBTUP其本身和内核中的其他地方使用外部DBACC; 对块中处理的数据的所有此类引用 DBACC现在都使用 45 位。

  • 从 ndb_restore 打印 SQL 语句。  NDB 7.5.4 添加了 NDB Cluster 分发版提供的ndb_restore--print-sql-log实用程序的选项。此选项使 SQL 日志记录到. 重要提示:要使用此选项还原的每个表都必须具有明确定义的主键。 stdout

    有关更多信息,请参阅第 21.5.24 节,“ndb_restore - 恢复 NDB Cluster 备份”

  • RPM 包的组织。  从 NDB 7.5.4 开始,为 NDB Cluster 提供的 RPM 包的命名和组织与为 MySQL 服务器发布的包的命名和组织更加一致。所有 NDB Cluster RPM 的名称现在都以 mysql-cluster. 现在使用data-node包安装数据节点;管理节点现在从 management-server包中安装;和 SQL 节点需要servercommon包。MySQL 和 NDB客户端程序,包括 mysql客户端和 ndb_mgm管理客户端,现在包含在client转速。

    有关 NDB Cluster RPM 和其他信息的详细列表,请参阅 第 21.3.1.2 节,“从 RPM 安装 NDB Cluster”

  • ndbinfo 进程和 config_nodes 表。  NDB 7.5.7 在 ndbinfo信息库中增加了两个表,提供集群节点的信息;这些表列在这里:

    • config_nodes:此表提供 NDB 集群配置文件中列出的每个节点的节点 ID、进程类型和主机名。

    • processes显示有关当前连接到集群的节点 的信息;此信息包括进程名称和系统进程 ID;对于每个数据节点和SQL节点,它还显示节点的天使进程的进程ID。此外,该表显示了每个连接节点的服务地址;这个地址可以使用 Ndb_cluster_connection::set_service_uri() 方法在 NDB API 应用程序中设置,这也是在 NDB 7.5.7 中添加的。

  • 系统名称。  NDB 集群的系统名称可用于标识特定集群。从 NDB 7.5.7 开始,MySQL 服务器将此名称显示为 Ndb_system_name状态变量的值;NDB API 应用程序可以使用 Ndb_cluster_connection::get_system_name() 在同一版本中添加的方法。

    自动生成基于管理服务器启动时间的系统名称;[system]在启动管理服务器之前,您可以通过向集群的配置文件添加一个部分并将 Name参数设置为您在该部分中选择的值 来覆盖此值。

  • ndb_restore 选项。  从 NDB 7.5.13 开始, 调用ndb_restore时都需要 --nodeid和 选项。 --backupid

  • ndb_blob_tool 增强功能。  从 NDB 7.5.18 开始, ndb_blob_tool实用程序可以检测存在内联部分的缺失 blob 部分,并将其替换为长度正确的占位符 blob 部分(由空格字符组成)。要检查是否缺少 blob 部分,请使用 --check-missing 此程序的选项。要用占位符替换任何缺失的 blob 部分,请使用该 --add-missing 选项。

    有关详细信息,请参阅 第 21.5.6 节,“ndb_blob_tool - 检查和修复导航台集群表的 BLOB 和 TEXT 列”

  • --ndb-log-fail-terminate 选项。  从 NDB 7.5.18 开始,您可以在 SQL 节点无法完全记录所有行事件时终止它。这可以通过 使用 选项 启动mysqld来完成。--ndb-log-fail-terminate

  • NDB 程序 - NDBT 依赖项删除。 NDB 许多实用程序对库 的依赖性NDBT已被删除。该库内部用于开发,正常使用不需要;它包含在这些程序中可能会在测试时导致不必要的问题。

    此处列出了受影响的程序,以及 NDB删除了依赖项的版本:

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

  • 自动安装程序弃用和删除。  MySQL NDB Cluster Auto-Installer 基于 Web 的安装工具 ( ndb_setup.py ) 在 NDB 7.5.20 中已弃用,并在 NDB 7.5.21 及更高版本中删除。它不再受支持。

  • ndbmemcache 弃用和删除。  ndbmemcache不再受支持。 ndbmemcache在 NDB 7.5.20 中已弃用,并在 NDB 7.5.21 中删除。

  • 移除了 Node.js 支持。  从 NDB Cluster 7.5.20 版本开始,NDB 7.5 对 Node.js 的支持已被删除。

    NDB Cluster 对 Node.js 的支持仅在 NDB 8.0 中得到维护。

  • 还原操作期间 NULL 和 NOT NULL 之间的转换。  从 NDB 7.5.23 开始,ndb_restoreNULL可以使用此处列出的选项支持按原样NOT NULL和反向 恢复列:

    • 要将NULL列恢复为 NOT NULL,请使用该 --lossy-conversions 选项。

      最初声明为的列 NULL不得包含任何 NULL行;如果是这样, ndb_restore退出并出错。

    • 要将NOT NULL列恢复为 NULL,请使用该 --promote-attributes 选项。

    有关详细信息,请参阅指示的 ndb_restore选项的描述。

从 NDB 7.5.7 开始不再支持 ClusterJPA;它的源代码和二进制文件已从 NDB Cluster 发行版中删除。

MySQL Cluster Manager 还支持 NDB Cluster 7.5,它提供了一个高级命令行界面,可以简化许多复杂的 NDB Cluster 管理任务。有关详细信息,请参阅MySQL Cluster Manager 1.4.8 用户手册