MySQL NDB Cluster 7.6.14 是 NDB 7.6 的新版本,它基于 MySQL Server 5.7,包括
NDB
存储引擎 7.6 版中的功能,并修复了最近在之前的 NDB Cluster 版本中发现的错误。
获取 NDB Cluster 7.6。 NDB Cluster 7.6 源代码和二进制文件可以从 https://mysql.net.cn/downloads/cluster/获得。
有关 NDB Cluster 7.6 中所做更改的概述,请参阅 NDB Cluster 7.6 中的新增功能。
此版本还合并了以前 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_waiter和 ndb_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
从类中删除对该类及其构造函数的 所有引用DomainTypeHandlerImpl
。SessionFactoryImpl
类现在使用代理对象底层的接口来标识域类,而不是使用代理类。也更新了DomainTypeHandlerFactoryTest
。该
finalize()
方法现已弃用。此补丁不会更改重写的 finalize() 方法,而只会抑制对它们的警告。此弃用将在以后的补丁中单独处理。更新了 CMake 配置以在编译 ClusterJ 时将弃用警告视为错误。
(漏洞 #29931625)
-
当原始数据集都使用相同的模式时,现在可以将来自 NDB Cluster 的不同实例的数据合并到单个目标 NDB Cluster 中。当使用
START BACKUP
在ndb_mgm中创建的备份并使用ndb_restore恢复它们时,使用--remap-column
此版本中实现的选项(以及--restore-data
可能的其他选项),支持此功能。--remap-column
可用于处理源集群之间主要键值、唯一键值或两种键值重叠的情况,您需要确保它们在目标集群中不重叠。也可以这样做以保留表之间的其他关系。与 一起使用时
--restore-data
,新选项将函数应用于指定列的值。为此选项设置的值是格式的字符串 ,其组件列于此处:db
.tbl
.col
:fn
:args
您可以
--remap-column
用于更新同一张表的多列和不同表的不同列,以及多个表和列的组合。同一张表的不同列可以采用不同的偏移值。作为这项工作的一部分,此版本中还向 ndb_desc添加了两个新选项:
--auto-inc
(缩写形式-a
):如果表有AUTO_INCREMENT
列,则在输出中包含下一个自动增量值。--context
(缩写形式-x
):提供有关表的额外信息,包括架构、数据库名称、表名称和内部 ID。
这些选项可能有助于
NDB
在计划合并时获取有关表的信息,特别是在mysql 客户端可能不容易使用的情况下。有关详细信息,请参阅
--remap-column
、--auto-inc
和 的说明--context
。(缺陷号 30383950) -
ndb_restore现在使用此版本中引入的选项
NDB
机备份 还原时支持源表和目标表的不同主键定义--allow-pk-changes
支持增加和减少构成原始主键的列数。当需要在恢复数据时适应模式版本更改时,或者这样做比ALTER TABLE
在恢复操作后对大量表执行涉及主键更改的语句更有效或更省时时,这可能很有用。当使用附加列扩展主键时,添加的任何列都不能为空,并且在进行备份时存储在任何此类列中的任何值都不得更改。在尝试将任何此类列添加到表的主键时更改任何此类列的值会导致恢复操作失败。由于某些应用程序在更新行时会设置所有列的值,即使一个或多个列的值没有更改,也可以使用
--ignore-extended-pk-updates
此版本中添加的选项来覆盖此行为. 如果您这样做,必须小心以确保这些列值实际上不会更改。从表的主键中删除列时,从主键中删除的列之后不必保留在表中。
有关详细信息,请参阅 ndb_restore
--allow-pk-changes
文档中的选项说明。(错误#26435136、错误#30383947、错误#30634010) -
添加了 mysqld
--ndb-log-fail-terminate
的选项。使用时,这会导致 SQL 节点在无法记录所有行事件时终止。(漏洞 #21911930)参考资料:另请参阅:Bug #30383919。
MySQL NDB ClusterJ: 从
Date
NDB 集群读取值时,ClusterJ 有时会从行中提取错误的年份值。这是因为Utility
班级在解包Date
值时错误地提取了一些额外的年份位。此补丁使 ClusterJ 仅提取所需的位。(缺陷号 30600320)MySQL NDB ClusterJ: 当集群的
NdbOperation::AbortOption
类型值为 时AO_IgnoreOnError
,当出现读取错误时,ClusterJ 将其视为行丢失并返回null
而不是异常。这是因为对于AO_IgnoreOnErro
,该execute()
方法总是在每个事务后返回一个成功代码,并且 ClusterJ 应该检查任何单个操作中的任何错误;但是,在这种情况下,ClusterJ 未检查读取操作。使用此补丁,现在会在查询执行后检查读取操作是否有错误,因此会报告读取错误。(缺陷号 30076276)还原带符号的自动增量列时, ndb_restore在确定数据中包含的最大值时错误地处理了负值。(缺陷号 30928710)
处理 CSV 文件时,ndb_import不接受mysqlimport接受的行末尾的尾随字段终止符。(缺陷号 30434663)
当节点 ID 分配请求因 NotMaster临时错误而失败时,总是立即重试节点 ID 分配,而不考虑错误原因。这导致了非常高的重试率,其影响可以观察到 节点 失败日志消息的Alloc 节点 ID
nnn
数量过多(大约每秒 15,000 条消息)。(缺陷号 30293495)对于
NDB
没有显式主键的表,NdbReceiverBuffer
可以分配太小的大小。这是因为NDB
从数据节点发送的属性位图总是包含主键。在这种情况下,现在考虑了隐藏主键所需的额外空间。(缺陷号 30183466)