管理节点等待来自另一个管理节点的心跳消息的时间长度现在可以使用
HeartbeatIntervalMgmdMgmd
此版本中添加的管理节点配置参数进行配置。在错过 3 次心跳后,连接被视为已断开。默认值为 1500 毫秒,或大约 6000 毫秒的超时。(错误#17807768,错误#16426805)MySQL NDB Cluster Auto-Installer 现在 在启动之前为集群中的
my.cnf
每个 mysqld生成一个文件。有关更多信息,请参阅 NDB Cluster 自动安装程序(不再支持)。(漏洞#16994782)BLOB
和TEXT
列现在由ALTER ONLINE TABLE ... REORGANIZE PARTITION
语句重新组织。(漏洞 #13714148)
性能: 在 MySQL NDB Cluster 代码库的不同位置发现的许多情况下,执行了不必要的迭代;这是由于在满足测试条件后未能突破重复控制结构造成的。这个社区贡献的修复程序通过提供缺失的中断来删除不需要的重复。(错误#16904243、错误#69392、错误#16904338、错误#69394、错误#16778417、错误#69171、错误#16778494、错误#69172、错误#16798410、错误#69207、错误#16801489、错误#69215 #16904266,漏洞 #69393)
打包:
NDB
从 RPM 安装时,不包括 特定于 MySQL NDB Cluster 和存储引擎的部分文档(漏洞 #16303451)Microsoft Windows: Windows 错误ERROR_FILE_EXISTS未被识别
NDB
,将其视为未知错误。(漏洞 #16970960)-
NDB Disk Data:
NDB
error 899 RowId already allocated was raised due to a RowId “ leak ”发生在以下任一情况下:在有序索引更新因 insufficient 而失败后,向内存表中插入一行被拒绝
DataMemory
。由于缺少足够的表空间,向磁盘数据表中插入一行被拒绝。
(漏洞 #13927679)
参考资料:另请参阅:Bug #22494024、Bug #13990924。
NDB Cluster API: 该
Event::setTable()
方法现在支持指针或对表的引用作为其必需的参数。如果使用空表指针,该方法现在返回 -1 以明确表明这是发生了什么。(漏洞 #16329082)尝试恢复到具有
BLOB
与原始位置不同的列的表会导致 ndb_restore--restore-data
失败。(漏洞#17395298)ndb_restore可以在使用属性提升或降级到现有表的还原的最后阶段中止。如果转换后的属性可为空并且备份已在活动数据库上运行,则可能会发生这种情况。(漏洞#17275798)
无法在运行 freeSSHd 的 Windows 主机上启动由自动安装程序创建的 MySQL NDB Cluster 进程。(漏洞#17269626)
数据节点块现在
DBUTIL
对它从其他节点接收某些消息的顺序不太严格。(漏洞 #17052422)ALTER ONLINE TABLE ... REORGANIZE PARTITION
针对具有或使用外键引用的表运行时失败。(错误#17036744,错误#69619)-
TUPKEYREQ
信号用于从元组管理器块 (DBTUP
) 读取数据,并用于所有类型的数据访问,尤其是用于读取多行的扫描。TUPKEYREQ 指定要读取的一系列“列”,它们可以是特定表中的单个列,也可以是伪列,其中两个 -READ_ALL
和READ_PACKED
- 是读取表中所有列或这些列的某些子集的别名。现代 NDB API 应用程序使用伪列,因为它们需要更少的空间TUPKEYREQ
来指定要读取的列,并且可以以更紧凑(打包)的格式返回数据。此修复将堆栈信号对象的创建和初始化移动到仅那些需要
EXECUTE_DIRECT
到其他块实例的伪列读取,而不是每次读取。此外,堆栈信号的大小现在有所不同,以适应每个伪列的要求,因此现在只有INDEX_STAT
伪列的读取需要初始化(每次执行此操作时需要 3KB 内存)。(漏洞 #17009502) 尝试将接收线程锁定到核心时,有时可能会出现竞争条件。(漏洞 #17009393)
使用
WHERE
withORDER BY ... DESC
子句的连接结果未正确排序;在DESC
这种情况下,关键字实际上被忽略了。(错误#16999886,错误#69528)RealTimeScheduler
无法与运行 ndbmtd的数据节点一起正常工作。(漏洞 #16961971)如果处理不当,在本地检查点期间发生的文件系统错误有时会导致 LCP 无明显原因地挂起。现在在这种情况下,这种错误总是会导致节点失败。请注意,当本地检查点失败时,LQH 块总是关闭节点;此处的更改是为了使可能的节点故障更快地发生,并使原始文件系统错误更加明显。(漏洞 #16961443)
重新实现了内核
SPJ
块中 父批处理完成的维护和检查 。NDB
在其他改进中,现在保留了树中所有祖先节点的完成状态。(漏洞 #16925513)从具有外键的表中删除本身不是外键的
NDB
列失败并显示ER_TABLE_DEF_CHANGED
。(漏洞 #16912989)-
LCP 片段扫描看门狗定期检查作为本地检查点的一部分执行的片段扫描是否没有进展,如果在给定的时间过去后没有进展,则关闭节点。此间隔以前硬编码为 60 秒,现在可以使用
LcpScanProgressTimeout
此版本中添加的数据节点配置参数进行配置。此配置参数设置本地检查点在 LCP 片段扫描看门狗关闭节点之前可以停止的最长时间。默认值为 60 秒,这提供了与以前版本的向后兼容性。
您可以通过将此参数设置为 0 来禁用 LCP 片段扫描看门狗。(缺陷 #16630410)
-
添加了ndb_error_reporter选项
--connection-timeout
,这使得可以设置连接到节点的超时,--dry-scp
禁用与远程主机的 scp 连接,以及--skip-nodegroup
跳过给定节点组中的所有节点。(漏洞 #16602002)参考资料:另请参阅:Bug #11752792、Bug #44082。
发出后,如果 已经使用了备份ID,按预期发生了重复ID导致的错误,但在此之后,该命令从未完成。(错误#16593604,错误#68854)
START BACKUP
id
WAIT STARTEDid
START BACKUP
ndb_mgm将提供给
ABORT BACKUP
命令的备份 ID 视为有符号值,因此大于 2 31的备份 ID 环绕为负值。此问题还影响了超出范围的备份 ID,这些 ID 环绕为负值,而不是在这种情况下如预期的那样导致错误。备份 ID 现在被视为无符号值, ndb_mgm现在对大于MAX_BACKUPS
(2 32 ) 的备份 ID 值执行适当的范围检查。(错误#16585497,错误#68798)尝试指定大于允许的最大值的备份 ID 时,该值被静默截断。(错误#16585455,错误#68796)
-
当起始数据节点收到其节点 ID 时,另一个数据节点意外关闭导致后者在启动阶段 1 中挂起。(缺陷 #16007980)
参考资料:另请参阅:错误 #18993037。
SELECT ... WHERE ... LIKE
使用 时,来自NDB
表的结果可能会返回不正确的结果engine_condition_pushdown=ON
。(漏洞 #15923467,漏洞 #67724)-
接收线程在
NDB
接收数据时不必要地等待其他作业缓冲区变得可用。这导致接收互斥锁在此等待期间被保留,这可能导致当接收线程以实时优先级运行时出现繁忙等待。此修复还处理了以下情况:接收线程对作业缓冲区的初始检查的负返回值阻止进一步执行数据接收,这可能导致通信阻塞或配置
ReceiveBufferMemory
未充分利用。(漏洞 #15907515) 当给定线程的可用作业缓冲区低于临界阈值时,内部多线程作业调度程序等待传入信号而不是传出信号的作业缓冲区变为可用,这意味着调度程序在恢复执行之前等待最大超时(1 毫秒) . (漏洞 #15907122)
lower_case_table_names
在 Windows 系统上 设置为 1 或 2 会导致ALTER TABLE ... ADD FOREIGN KEY
针对名称包含大写字母的表的语句失败,并出现错误 155, No such table: '(null)'。(漏洞 #14826778,漏洞 #67354)在某些情况下,可能会报告错误的看门狗状态。为 11 号看门狗状态添加了一个新的状态名称
Packing Send Buffers
,之前报告为Unknown place
。作为此修复的一部分,在这种情况下,现在始终会报告没有名称的州的州编号。(漏洞 #14824490)-
当一个节点发生故障时,分发处理程序(
DBDIH
内核块)与事务协调器(DBTC
)一起采取措施,以确保涉及故障节点的所有正在进行的事务都由幸存的节点接管并提交或中止。接管然后提交的事务属于节点故障发生时的当前纪元,因此幸存节点必须保持此纪元可用,直到事务接管完成。这是维持纪元之间的顺序所必需的。在旨在保持当前纪元打开的机制中遇到问题,导致该机制与通常用于声明纪元结束的机制之间出现竞争条件。这可能会导致当前纪元过早关闭,从而导致一个或多个幸存的数据节点发生故障。(错误#14623333,错误#16990394)
LongMessageBuffer
重负载下内存 耗尽 可能导致运行ndbmtd的数据节点失败。(漏洞 #14488185)当使用动态监听端口接受来自 API 节点的连接时,端口号被连续地报告给管理服务器。这需要每个 API 节点往返一次,导致数据节点连接到管理服务器所需的时间随着 API 节点的数量线性增长。为纠正此问题,每个数据节点现在会同时报告所有动态端口。(漏洞#12593774)
-
ndb_error-reporter不支持该
--help
选项。(错误#11756666,错误#48606)参考资料:另请参阅:Bug #11752792、Bug #44082。
以前,用作节点间分布式决策制定的协调器或领导者的节点(也称为
DICT
管理器——请参阅 DBDICT 块)在ndb_mgm客户端SHOW
命令的输出中被指示为“主” 节点,尽管该节点没有与 MySQL 复制中的主服务器的关系。(还应注意,除调试NDBCLUSTER
源代码外,没有必要知道哪个节点是领导者。)为了避免可能的混淆,该标签已被删除,领导者节点现在在SHOW
命令输出中使用星号表示(*
) 特点。(缺陷 #11746263,缺陷 #24880)应用配置参数设置时用于线程配置的值矩阵
MaxNoOfExecutionThreads
已得到改进,以支持更多数量的 LDM 线程。有关更改的更多信息,请参阅 多线程配置参数 (ndbmtd)。(缺陷 #75220,缺陷 #20215689)在许多内部方法中满足所需条件后,程序执行未能跳出循环,在所有发生这种情况的情况下执行不需要的工作。(错误#69610、错误#69611、错误#69736、错误#17030606、错误#17030614、错误#17160263)
ABORT BACKUP
在 ndb_mgm客户端中(请参阅 NDB Cluster Management Client 中的命令)返回时间过长(大约只要备份需要完成,如果它没有被中止),并且无法删除具有的文件由中止的备份生成。(漏洞 #68853,漏洞 #17719439)-
使用带有 和 选项的ndb_restore
NDB
将数据恢复到表 时的属性提升和降级 已改进如下:--restore-data
--promote-attributes
--lossy-conversions