Documentation Home
MySQL NDB Cluster 7.5 发行说明  /  MySQL NDB Cluster 7.5.18 (5.7.30-ndb-7.5.18) 的变化(2020-04-28,正式发布)

MySQL NDB Cluster 7.5.18 (5.7.30-ndb-7.5.18) 的变化(2020-04-28,正式发布)

MySQL NDB Cluster 7.5.18 是 MySQL NDB Cluster 7.5 的新版本,它基于 MySQL Server 5.7,包括NDB存储引擎 7.5 版中的功能,并修复了最近在以前的 NDB Cluster 版本中发现的错误。

获取 MySQL NDB Cluster 7.5。  MySQL NDB Cluster 7.5 源代码和二进制文件可以从https://mysql.net.cn/downloads/cluster/获得。

有关 MySQL NDB Cluster 7.5 中所做更改的概述,请参阅 NDB Cluster 7.5 中的新增功能

此版本还合并了以前 NDB Cluster 版本中所做的所有错误修复和更改,以及通过 MySQL 5.7.30 在主线 MySQL 5.7 中添加的所有错误修复和功能更改(请参阅MySQL 5.7.30 中的更改(2020-04- 27, 一般可用性) ) 。

添加或更改的功能

  • NDB 客户端程序:为ndb_blob_tool实用程序 添加了两个选项 ,以使其能够检测存在内联部分的缺失 blob 部分,并用正确长度的占位符 blob 部分(由空格字符组成)替换这些部分。要检查是否缺少 blob 部分,请使用 ndb_blob_tool --check-missing选项。要用占位符替换任何缺失的 blob 部分,请使用该程序的 --add-missing选项,该选项也添加在此版本中。(漏洞 #28583971)

  • NDB 客户端程序: 删除了ndb_waiterndb_show_tables实用程序对 NDBT库的依赖。该库用于 NDB开发测试,正常使用不需要。此更改对用户的可见影响是这些程序在运行完成后不再打印 。依赖此行为的应用程序应在升级到此版本时进行更新以反映此更改。 NDBT_ProgramExit - status

  • MySQL NDB ClusterJ: 未使用的antlr3插件已从 ClusterJpom文件中删除。(漏洞 #29931625)

  • MySQL NDB ClusterJ: ClusterJ 支持 MySQL NDB Cluster 8.0 的最低 Java 版本现在是 Java 8。(缺陷 #29931625)

  • MySQL NDB ClusterJ:ClusterJ 使用的一些 Java API 现在在最近的 Java 版本中已弃用。对 ClusterJ 进行了这些调整:

    • 将所有Class.newInstance()呼叫 替换为Class.getDeclaredConstructor().newInstance() 呼叫。还根据需要更新了异常处理和测试用例。

    • 所有Number从原始类型或原始类型实例化对象的类的构造函数String都已弃用。valueOf()用相应的方法调用 替换了所有此类弃用的实例化 调用。

    • Proxy.getProxyClass()现已弃用 。该类DomainTypeHandlerImpl 现在使用该方法直接创建一个新实例 Proxy.newProxyInstance()Proxy从类中删除对该类及其构造函数的 所有引用DomainTypeHandlerImplSessionFactoryImpl类现在使用代理对象底层的接口来标识域类,而不是使用代理类。也更新了 DomainTypeHandlerFactoryTest

    • finalize()方法现已弃用。此补丁不会更改重写的 finalize() 方法,而只会抑制对它们的警告。此弃用将在以后的补丁中单独处理。

    • 更新了 CMake 配置以在编译 ClusterJ 时将弃用警告视为错误。

    (漏洞 #29931625)

  • 添加了 mysqld--ndb-log-fail-terminate的选项。使用时,这会导致 SQL 节点在无法记录所有行事件时终止。(漏洞 #21911930)

    参考资料:另请参阅:Bug #30383919。

修正错误

  • MySQL NDB ClusterJ:DateNDB 集群读取值时,ClusterJ 有时会从行中提取错误的年份值。这是因为Utility班级在解包Date值时错误地提取了一些额外的年份位。此补丁使 ClusterJ 仅提取所需的位。(缺陷号 30600320)

  • MySQL NDB ClusterJ: 当集群的 NdbOperation::AbortOption类型值为 时AO_IgnoreOnError,当出现读取错误时,ClusterJ 将其视为行丢失并返回null而不是异常。这是因为对于AO_IgnoreOnErro,该 execute()方法总是在每个事务后返回一个成功代码,并且 ClusterJ 应该检查任何单个操作中的任何错误;但是,在这种情况下,ClusterJ 未检查读取操作。使用此补丁,现在会在查询执行后检查读取操作是否有错误,因此会报告读取错误。(缺陷号 30076276)

  • 还原带符号的自动增量列时, ndb_restore在确定数据中包含的最大值时错误地处理了负值。(缺陷号 30928710)

  • 当节点 ID 分配请求因 NotMaster临时错误而失败时,总是立即重试节点 ID 分配,而不考虑错误原因。这导致了非常高的重试率,其影响可以观察到 节点 失败日志消息的Alloc 节点 IDnnn数量过多(大约每秒 15,000 条消息)。(缺陷号 30293495)

  • 对于NDB没有显式主键的表,NdbReceiverBuffer可以分配太小的大小。这是因为NDB从数据节点发送的属性位图总是包含主键。在这种情况下,现在考虑了隐藏主键所需的额外空间。(缺陷号 30183466)