Documentation Home

18.2.4.2 NDB Cluster 7.4 中的新功能

NDB Cluster 7.4 中对 NDB Cluster 进行了以下改进:

  • 冲突检测和解决增强。  保留的列名命名空间NDB$ 现在用于异常表元列,允许记录主表列的任意子集,即使它们不是原始表主键的一部分。

    不再需要记录完整的原始主键,因为现在仅通过名称和类型来匹配异常表列。现在,您还可以在例外表中记录不属于主表主键的列的值。

    现在可以进行读取冲突检测。冲突事务读取的所有行都被标记,并记录在异常表中。在同一事务中插入的行不包括在读取或记录的行中。这种读跟踪依赖于分片副本具有独占读锁,需要 ndb_log_exclusive_reads提前设置。有关更多信息和示例, 请参阅 读取冲突检测和解决。

    现有的例外表仍然受支持。有关更多信息,请参阅 第 18.7.11 节,“NDB Cluster 复制冲突解决”

  • 循环(主动-主动)复制改进。  当使用循环或主动-主动 NDB Cluster 复制拓扑时,您可以使用服务器系统变量将主要角色或次要角色之一分配给给定的 NDB Cluster ndb_slave_conflict_role ,当从充当 NDB Cluster 的 NDB Cluster 进行故障转移时可以使用它primary,或者当使用 NDB$EPOCH2()NDB$EPOCH2_TRANS()(NDB 7.4.2 及更高版本)进行冲突检测和解决时,它支持删除-删除冲突处理。

    有关更多信息,请参阅 ndb_slave_conflict_role 变量的描述以及 NDB$EPOCH2()。另见 第 18.7.11 节,“NDB Cluster 复制冲突解决”

  • 每片段内存使用报告。  您现在可以从 memory_per_fragment 视图中获取有关各个 NDB Cluster 片段的内存使用情况的数据,这些数据在 NDB 7.4.1 中添加到 ndbinfo信息数据库中。有关更多信息,请参阅 第 18.6.15.17 节,“ndbinfo memory_per_fragment 表”

  • 节点重启改进。  NDB Cluster 7.4 包括许多改进,这些改进减少了重新启动数据节点所需的时间。这些在以下列表中进行了描述:

    • 在节点启动时分配的内存在被触摸之前无法使用,这导致操作系统预留所需的实际物理内存。在以前的 NDB Cluster 版本中,接触分配的每一页内存的过程是单线程的,这使得它相对耗时。这个过程现在已经用多线程重新实现了。在 16 个线程的测试中,观察到触摸时间比单个线程短 3 倍。

    • 增加本地检查点的并行化;在 NDB Cluster 7.4 中,LCP 现在支持 32 个片段,而不是以前的 2 个。这极大地提高了 CPU 能力的利用率,否则这些能力将被闲置,并且可以使 LCP 的速度提高多达 10 倍;这种加速反过来可以大大缩短节点重启时间。

      在节点和系统重启期间用于节点复制阶段的并行化程度可以在 NDB 7.4.3 及更高版本中通过将 MaxParallelCopyInstances 数据节点配置参数设置为非零值来控制。

    • 磁盘写入报告由新 ndbinfodisk_write_speed_basedisk_write_speed_aggregatedisk_write_speed_aggregate_node提供,它们提供有关每个正在使用的 LDM 线程的磁盘写入速度的信息。

      此版本还添加了数据节点配置参数 MinDiskWriteSpeedMaxDiskWriteSpeedMaxDiskWriteSpeedOtherNodeRestart和 , MaxDiskWriteSpeedOwnRestart 以在当前节点、另一个节点或当前没有节点重新启动时控制 LCP 和备份的写入速度。

      这些更改旨在取代使用 DiskCheckpointSpeedDiskCheckpointSpeedInRestart 配置参数的磁盘写入配置。这 2 个参数现在已被弃用,并且在未来的 NDB Cluster 版本中将被删除。

    • 通过用正常(未延迟的)信号替换在对性能至关重要的点发现的延迟信号,已经获得了从备份恢复 NDB Cluster 的更快时间。消除或替换这些不必要的延迟信号应该会显着减少备份 NDB Cluster 或从备份恢复 NDB Cluster 所需的时间。

    • 优化了几个与接收线程相关的内部方法 NDB,以提高SQL处理的效率NDB。接收器线程有时可能必须每秒处理几百万条接收到的记录,因此在从 NDB Cluster 数据节点检索记录时不要执行不必要的工作或浪费资源是至关重要的。

  • 改进了 NDB Cluster 重启和启动阶段的报告。 restart_info表(包含在ndbinfo 从 NDB 7.4.2 开始的信息数据库中)提供有关节点和系统重启的当前状态和时间信息。

    NDB Cluster 启动阶段的报告和日志记录还提供了比以前更频繁和更具体的启动期间的打印输出。有关更多信息,请参阅 第 18.6.4 节,“NDB Cluster 启动阶段摘要”

  • NDB API:新的事件 API。  NDB 7.4.3 引入了一个时代驱动的事件 API,它取代了早期基于 GCI 的模型。新版本的 API 还简化了错误检测和处理。这些更改是在 NDB API 中实现的,方法是为 Ndb和 实现许多新方法NdbEventOperation,弃用这两个类的其他几种方法,并向 Event::TableEvent.

    NdbNDB 7.4.3 中 新增的事件处理方法 有pollEvents2(), nextEvent2(), getHighestQueuedEpoch(), 和 getNextEventOpInEpoch2()Ndb方法 pollEvents()nextEvent()getLatestGCI()getGCIEventOperations()isConsistent()和 从isConsistentGCI()同一版本开始弃用。

    NDB 7.4.3 添加 NdbEventOperation事件处理方法 getEventType2(), getEpoch(), isEmptyEpoch(), 和 isErrorEpoch; 它废弃了 getEventType(), getGCI(), getLatestGCI(), isOverrun(), hasError()clearError()

    虽然一些(但不是全部)新方法是已弃用方法的直接替代品,但并非所有已弃用方法都映射到新方法。 Event Class提供有关哪些旧方法对应于新方法的信息。

    使用新 API 的错误处理不再使用专用 hasError()clearError() 方法处理,这些方法现在已弃用(因此在 NDB Cluster 的未来版本中将被删除)。为了支持这一变化, TableEvent类型列表现在包括值TE_EMPTY(空纪元)、TE_INCONSISTENT(不一致纪元)和TE_OUT_OF_MEMORY (不一致数据)。

    get_eventbuffer_free_percent()通过实施新的 set_eventbuffer_free_percent()、 和 get_event_buffer_memory_usage() 方法 ,事件缓冲区管理也得到了改进 。内存缓冲区使用情况现在可以在应用程序代码中使用 Ndb::EventBufferMemoryUsage. 系统 ndb_eventbuffer_free_percent 变量也在 NDB Cluster 7.4 中实现,可以从 MySQL 客户端应用程序检查事件缓冲区内存使用情况。

    有关详细信息,请参阅所列方法Ndb和 方法 的详细说明 。NdbEventOperation另请参阅Event::TableEvent以及Ndb::EventBufferMemoryUsage

  • 每个片段的操作信息。  在 NDB 7.4.3 及更高版本中,可以使用信息数据库operations_per_fragment 中的表 轻松获取对给定片段或片段副本的各种类型操作的计数 。ndbinfo这包括读取、写入、更新和删除操作,以及由这些操作执行的扫描和索引操作。有关拒绝操作的信息,以及有关从给定片段副本扫描和返回的行的信息,也显示在 中 operations_per_fragment。该表还提供有关用作属性值的解释程序以及它们返回的值的信息。

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

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

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

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

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

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

  • ndbmemcache 弃用和删除。  ndbmemcache不再受支持。 ndbmemcache已从 NDB 7.4.3 开始弃用,并计划在 NDB 7.4.31 中删除。

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

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

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