MySQL NDB群集8.0.14是基于MySQL Server 8.0的NDB 8.0的新开发版本,包括8.0版中的功能NDB.
存储引擎,以及最近修复以前的NDB群集版本中的错误。
获取NDB群集8.0。NDB集群8.0源代码和二进制文件可以从中获得10bet博彩公司 。
有关NDB集群8.0中的更改概述,请参阅什么是ndb集群中的新功能。
此版本还包含所有错误修复和在先前的NDB群集版本中进行的更改,以及通过MySQL 8.0.14在MySQL 8.0中添加的所有错误修复和功能更改(参见MySQL 8.0.14更新(2019-01-21,General Availability))。
性能:此版本介绍了扫描表现的许多显着改善;这些列在此处:
行校验和帮助检测硬件问题,但以牺牲性能为代价。
NDB.
现在提供了通过设置新的禁用这些的可能性ndb_row_checksum.
服务器系统变量为0;这样做意味着行校验和不会用于新的或修改过的表。对于所有类型的查询,这可能会对性能产生重大影响(某些情况下为5%到10%)。默认情况下,这个变量被设置为1,以提供与前面行为的兼容性。当队列不繁忙时,由扫描组成的查询可以在LDM线程中执行较长时间。
以前,在检查推动的条件之前读取了列;现在在读取任何列之前检查推送的条件。
当使用范围扫描作为连接执行的一部分时,推入连接的性能应该会有显著的提高。
NDB磁盘数据:
NDB.
现在,在连接到群集时,通过SQL节点实现磁盘数据对象的架构分发,包括表空间和日志文件组,就像它一样NDB.
数据库和内存表。这消除了MySQL数据字典和态度之间可能的不匹配NDB.
在磁盘数据表空间和撤消日志文件组恢复到时,可以出现的本机备份和恢复恢复NDB.
字典,但不是MySQL服务器的数据字典。NDB磁盘数据:
NDB.
现在利用MySQL数据字典,以确保在连接到群集时对所有群集SQL节点的所有群集SQL节点进行正确分发表空间和日志文件组。额外的元数据属性
NDB.
表现在用于从MySQL数据字典存储信息。因为该信息显着大于先前存储在此处的二进制表示(a.frm
文件不再使用),此额外元数据的硬编码大小限制已提高。这种变化可能会对降级的影响:试图阅读
NDB.
在NDB 8.0.14及以上版本中创建的表可能会导致运行NDB 8.0.13及以上版本的数据节点启动时失败NDB.
错误代码2355恢复模式失败:永久性错误,需要外部操作:资源配置错误。如果表的元数据大小超过了原来的限制6K,就会发生这种情况。在NDB 8.0.13和更早版本中创建的表可以被更高的版本读取,没有任何问题。有关更多信息,请参阅NDB表额外元数据的变化,也请参阅MySQL数据字典。(bug#27230681)
包装:预期的NDB标题文件在于
开发
RPM包代替libndbclient-devel.
。(bug#84580,bug#26448330)ndbmemcache:
libndbclient.so
无法找到和加载libssl.so.
,这可能导致问题ndbmemcache
使用Java的程序使用NDB.
。(bug#26824659)参考:参见:Bug #27882088, Bug #28410275。
mysql ndb clusterj:的
ndb.clusterj
测试NDB 8.0.13失败时,运行多次。这是为了处理NDB 8.0.13中一个新的、更严格的规则,该规则不允许将临时文件留在变量文件夹中MySQL-Test-Run(MTR)
。使用此修复程序,在执行测试之前将删除临时文件。(bug#28279038)mysql ndb clusterj:一个
空指针异常
使用Clusterj执行全表扫描时抛出包含BLOB或文本字段的表。这是因为省略了适当的对象初始化,并且现在通过此修复程序添加了它们。(bug#28199372,bug#91242)的
版本_Comment.
系统变量配置不正确mysqld.二进制文件并返回通用模式而不是适当的值。这影响了所有NDB集群二进制版本,但除外.deb.
包裹。(bug#29054235)尝试从源使用
-DWITH_NDBCLUSTER
和-Werror.
GCC 8失败了。(错误# 28707282)当将已删除的行从活动节点复制到刚开始的节点时,其中的一行或多行可能具有等于零的全局检查点索引。如果发生这种情况时,由于撤消日志已满而启动了一个完整的本地检查点,则
lcp_skip.
位设置为GCI = 0的行,导致数据节点意外关闭。(错误# 28372628)ndbmtd.有时在退出由于日志线程关闭时出现挂起。(bug#28027150)
NDB.
完全限定表名的上限为128个字符。因为mysqld.名称NDB.
使用以下格式的表格
, 在哪里database_name
/catalog_name.
/table_name
catalog_name.
总是def
,诸如此类陈述可能创建表
尽管表名称和数据库名称都不超过63个字符的限制,但尽管如此NDB.
。在这种情况下提出的错误是误导性的,已被替换。(bug#27769521)参考文献:另见:bug#27769801。
当。。。的时候
SUMA.
内核块收到一个sub_stop_req.
信号,它执行信号然后回复SUB_STOP_CONF
。(在此响应后继回API后,API将打开以发送更多sub_stop_req.
发信号。)发送后SUB_STOP_CONF
如果没有存在订阅者,Suma会降低订阅,这涉及发送多个订阅者DROP_TRIG_IMPL_REQ
消息到DBTUP.
。LocalProxy可以并行地处理最多21个请求;不仅仅是在短时间排队中排队。当执行一个DROP_TRIG_IMPL_REQ
如果延迟,则可能会导致队列过载,从而导致数据节点使用短时间队列中的错误。通过延迟执行来解决这个问题
sub_stop_req.
如果信号DBTUP.
已经处理DROP_TRIG_IMPL_REQ
信号满负荷,而不是排队DROP_TRIG_IMPL_REQ
信号。(bug#26574003)ndb_restore.在索引重建失败时返回-1而不是预期的退出代码。(bug#25112726)
启动时,数据节点复制元数据,而本地检查点更新元数据。为避免任何冲突,在复制元数据时暂停任何正在进行的LCP活动。在给定节点上暂停本地检查点时出现问题,另一个节点在此节点上检查完整的LCP还会重新启动;检查实际上导致LCP在复制元数据之前完成,因此过早地结束了暂停。现在在这种情况下,LCP完成检查等待完成暂停的LCP,直到完成元数据复制,暂停按预期结束,在它开始的LCP中。(bug#24827685)
ndbout.
和ndberr.
退出后变得无效mgmd_run()
,并在下次调用之前重定向到它们mgmd_run()
在一个过程中导致分割错误ndb_mgmd.服务重新启动。此修复确保ndbout.
和ndberr.
始终保持有效。(bug#17732772,bug#28536919)ndbscanfilter.
并不总是处理空值
根据SQL标准,这可能会导致发送不符合条件的行,由MySQL服务器进行过滤(否则不需要)。(Bug #92407, Bug #28643463)参考:参见Bug #93977, Bug #29231709。
内部函数
ndb_my_error()
被用在ndbcluster_get_tablespace_statistics ()
和prepare_inplace_alter_table ()
在函数未能与之交互时报告错误NDB.
。预计该函数将在堆栈上推送NDB误差作为警告,然后通过将NDB错误转换为MySQL错误,然后最终调用来设置错误my_error()
通过翻译错误。在呼唤时my_error()
,该函数提取可能包含占位符的格式字符串,并在类似的函数中使用格式字符串Sprintf()
在这种情况下,在这种情况下可以读取通向分割错误的任意内存,因为这是一个事实my_error()
被要求没有任何论点。修复程序始终将NDB错误推向警告,然后使用提供的消息设置错误。已添加新的辅助功能
Thd_ndb
用于代替ndb_my_error()
。(bug#92244,bug#28575934)使用错误921报告正在耗尽撤销日志缓冲区内存事务内存不足…(增加SharedGlobalMemory)。
这个问题通过引入一个新的错误代码923来解决undo缓冲存储器(增加undo_buffer_size)。(bug#92125,bug#28537319)
当移动一个
operationRec.
从串行到并行队列,dbacc :: startnext()
无法更新OperationRec :: op_acc_lock_mode.
需要反映累计的标志op_lock_mode.
在并行队列中的所有先前操作中的所有操作。ACC锁定队列中的这种不一致导致扫描锁定收购机制失败,因为它错误地结束了锁定不遵守。当中止作为这种不一致的并行锁定队列成员的操作时,同样的故障导致断言。(bug#92100,bug#28530928)ndb_restore.被调用后没有释放所有内存以恢复已经存在的表。(bug#92085,bug#28525898)
数据节点在启动过程中由于到达
SCAN_FRAGREQ
恢复阶段的信号。这个信号来自于一个在节点之前开始的扫描,该扫描应该由于故障节点的参与而终止。(Bug #92059, Bug #28518448)DBTUP.
发送错误检测到元组腐败当读取操作尝试读取插入在同一事务中的元组的值时。(bug#92009,bug#28500861)参考文献:另见:Bug#28893633。
在执行自引导外键上执行更新时,可能会发生错误约束违规错误。(bug#91965,bug#28486390)
参考文献:另见:bug#90644,bug#27930382。
一个
NDB.
通过尝试查找已经发布的触发器的定义,可以删除内部触发定义。仍然要执行触发器的挂起实例。这导致不可预测的,因此可能导致数据节点故障的不安全行为。问题的根本原因介绍了与确定是否已发布给定触发器的代码中的无效假设;通过确保行为来解决问题NDB.
当确定触发器定义已被发布时,它是一致的,并且满足预期。(Bug #91894, Bug #28451957)在某些情况下,包含大量并发插入的工作负载导致使用调试构建时的数据节点故障。(bug#91764,bug#28387450,bug#29055038)
在初始节点期间重新启动磁盘数据表和存在的磁盘数据表
TwopassinitialNoderEstartArtCopy.
启用,DBTUP.
使用不安全扫描磁盘顺序。在这种情况下,这种扫描将不再采用。(bug#91724,bug#28378227)检查旧的LCP文件可以测试表版本,但这并不总是可靠的。现在,不再依赖表版本,检查将任何具有
maxGCI
小于它creategci.
。(bug#91637,bug#28346565)在某些情况下,在同一记录中反复触发级联更新触发器,最终消耗所有可用的并发操作,导致错误233事务协调器中的操作外记录(增加MaxNoOfConcurrentOperations)。如果
MaxNoofConCurrentopoperations
设置为足够高的值以避免这种情况,则数据节点消耗大量CPU,很可能最终导致超时。(Bug #91472, Bug #28262259)