在有许多API节点的MySQL NDB集群的配置文件中添加了新的数据节点后,但是在启动任何数据节点进程之前,API节点尝试连接到这些数据节点”失踪”每秒多次访问数据节点,这会给管理节点和网络带来额外的负载。为了减少这种方式造成的不必要的流量,现在可以控制API节点连接到未能响应的数据节点之间的等待时间;这是通过两个新的API节点配置参数实现的
StartConnectBackoffMaxTime
而且ConnectBackoffMaxTime
.在应用这些参数时,不考虑节点连接尝试期间所花费的时间,这两个参数都以毫秒为单位,分辨率约为100毫秒。的值,只要API节点没有像前面描述的那样连接到任何数据节点
StartConnectBackoffMaxTime
参数是应用;否则,ConnectBackoffMaxTime
使用。在有许多未启动数据节点的MySQL NDB集群中,可以提高这些参数的值,以避免连接到尚未在集群中开始工作的数据节点,以及调节到管理节点的高流量。
有关这些参数行为的更多信息,请参见在NDB集群中定义SQL和其他API节点.(错误# 17257842)
添加了
——exclude-missing-tables
选择ndb_restore.当启用该选项时,该选项将导致忽略备份中存在但目标数据库中没有的表。(Bug #57566, Bug #11764704)
NDB集群api:Bug #16723708的修复停止了
ndb_logevent_get_next ()
函数从转换日志事件的ndb_mgm_event_category
到一个枚举
类型,但此更改干扰了现有的应用程序,因此现在恢复了函数的原始行为。一个新的MGM API函数显示了修正的行为ndb_logevent_get_next2 ()
已在此版本中添加,以取代还原函数,用于不需要向后兼容的应用程序。除这一点外,新职能在所有其他方面都与它的前身相同。(错误# 18354165)引用:恢复补丁:Bug #16723708。
NDB集群api:NDB API扫描泄漏
Ndb_cluster_connection
对象后nextResult ()
在操作导致错误时调用。中相应的连接对象被锁定DBTC
内核阻塞,直到连接被关闭。(Bug #17730825, Bug #20170731)当组装表单的错误消息时节点状态不正确
n
状态:node_state
,当传输程序连接失败时写入,在许多实例中,节点状态被用来代替节点ID,这导致了这种类型的错误,节点状态被错误地报告。(Bug #19559313, Bug #73801)在某些情况下,一个线程在读取另一个线程时重置传输器接收缓冲区。当接收数据的线程和另一个启动传输程序断开连接(断开连接将清除该缓冲区)的线程之间发生竞争条件时,就会发生这种情况。现在已经实现了并发逻辑来防止这种竞争的发生。(Bug #19552283, Bug #73790)
数据节点的故障在某些情况下也会导致一组API节点的故障
CLOSE_COMREQ
有时未完全初始化的信号。(错误# 19513967)在其中之一发生严重故障时,将打印更详细的错误报告
NDB
内部sendSignal * ()
方法,在进程崩溃之前,因为已经实现了sendSignal ()
,但在更专业的领域却没有sendSignalNoRelease ()
方法。正确报告这种类型的崩溃在某些情况下有助于识别配置硬件问题。(错误# 19414511)参考文献:参见Bug #19390895。
ndb_restore当数据对象数量超过约17k时,恢复集群元数据失败。(错误# 19202654)
针对以前处理多个节点故障的问题的修复需要确定故障节点正在运行的TC实例的数量,然后接管它们。确定这个数目的机制有时会提供一个无效的结果,导致失败节点中的TC实例数目设置为过高的值。这进而导致了冗余的接管尝试,这浪费了时间,并对其他节点故障和全局检查点的处理产生了负面影响。(错误# 19193927)
这个问题是:Bug #18069334的回归。
在删除同一元组之前立即执行读取的并行事务可能导致
NDB
内核崩溃。方法指定单独的TC线程时,更有可能发生这种情况ThreadConfig
配置参数。(错误# 19031389)不同属性间的属性提升
文本
(任何类型的非常小的文本串
,文本
,简单
,量变
)ndb_restore在某些情况下处理不当。此外,文本
值现在根据设置的限制截断mysqld(例如,转换为非常小的文本串
从另一个类型被截断为256字节)。在使用多字节字符集的列的情况下,值将被截断到最后一个格式良好的字符的末尾。此外,由于此修复,转换为
文本
现在不允许使用与原始字符集不同的任何大小的列。(错误# 18875137)为了帮助许多看门狗警告提出的诊断问题,现在可以使用激活(或禁用)杀手看门狗
转储2610
在ndb_mgm客户端。设置后,将关闭下一个看门狗警告发生的数据节点,并提供跟踪日志。(错误# 18703922)的
NDB
优化的节点恢复机制试图只将相关的页面更改转移到启动节点,以加快恢复过程;这是通过让开始节点指示它所参与的最后一个全局检查点(GCI)的索引来实现的,因此已经在运行的节点只复制自该GCI以来已更改的行数据。每一行都有一个GCI元列,这就方便了;对于已删除的行,先前字符串该行数据的slot包含一个GCI值,对于已删除的页,缺失页上的每一行都被认为已更改,因此需要发送。当开始节点接收到这些更改时,该节点执行对页面和索引的查找,以确定它们包含的内容。这种查找可能导致根据逻辑页面ID映射真实的底层页面,即使该页面不包含任何数据。
出现此问题的一种方式发生在集群之后
DataMemory
使用量接近最大值,删除许多行,然后滚动重新启动数据节点,期望这将释放内存,但实际上,在这种情况下,内存可能不会被释放,在某些情况下,内存使用量实际上会增加到最大值。此修复方案解决了这些问题,它确保在节点恢复过程中,只有当真实的物理页面包含需要存储的实际数据时,才将该页面映射到逻辑ID。(Bug #18683398, Bug #18731008)
当数据节点发送
MISSING_DATA
由于缓冲区溢出,当前纪元没有事件数据被发送,在虚拟事件列表中的信息被传输到完成的列表后,为处理这种不一致而创建的虚拟事件列表没有被删除。(错误# 18410939)在向缓存范围末端手动插入后,对下一个自动递增值的不正确计算可能导致有时使用重复的值。的值的某些组合时可能会出现此问题
auto_increment_increment
,auto_increment_offset
,ndb_autoincrement_prefetch_sz
.这个问题已经通过修改计算得到了解决,以确保缓存中的下一个值是由
NDB
是这样的形式auto_increment_offset + (
.这避免了MySQL Server对返回值的任何舍入,当舍入值落在缓存值的范围之外时,可能会导致重复的条目N
* auto_increment_incrementNDB
.(错误# 17893872)ndb_show_tables
——帮助
输出包含了误导性的信息——数据库
(- d
)选项。此外,期权的长形式(——数据库
)没有正常工作。(错误# 17703874)使用
——帮助
选项ndb_print_file导致程序段错误。(错误# 17069285)对于多线程数据节点,有些线程确实经常通信,其结果是非常旧的信号可能保留在信号缓冲区的顶部。在执行线程跟踪时,信号转储器根据在信号缓冲区中找到的信息计算最新的信号ID,这意味着这些旧信号可能被错误地计算为最新的信号。现在,信号ID计数器被保留为线程状态的一部分,在为跟踪文件转储信号时使用的正是这个值。(Bug #73842, Bug #19582807)