下载这些版本说明
PDF(美国Ltr)- 1.1 mb
PDF (A4)- 1.1 mb
HTML下载(TGZ)- 239.6 kb
HTML下载(Zip)- 267.2 kb


MySQL NDB集群8.0版本说明/版本系列更新日志:MySQL NDB Cluster 8.0/ MySQL NDB集群8.0.14的变更(19-01-21,开发里程碑)

MySQL NDB集群8.0.14的变更(19-01-21,开发里程碑)

增加或更改的功能

  • 性能:这个版本在扫描性能方面引入了一些显著的改进;以下列出:

    • 行校验和有助于检测硬件问题,但这是以牺牲性能为代价的。NDB现在提供了通过设置新禁用这些的可能性ndb_row_checksum服务器系统变量为0;这样做意味着不对新表或修改的表使用行校验和。这可能会对所有类型的查询的性能产生显著影响(在某些情况下,影响为5%到10%)。默认情况下,这个变量被设置为1,以提供与前面行为的兼容性。

    • 当队列不繁忙时,由扫描组成的查询可以在LDM线程中执行较长时间。

    • 以前,在检查推入条件之前读取列;现在,在读取任何列之前检查已推条件。

    • 当使用范围扫描作为连接执行的一部分时,推送连接的性能应该会有显著的提高。

  • NDB盘数据:NDB现在,当SQL节点连接到集群时,通过SQL节点实现了磁盘数据对象(包括表空间和日志文件组)的模式分布,就像它所做的一样NDB数据库和内存中的表。这样就消除了MySQL数据字典和NDB磁盘数据表空间和undo日志文件组恢复到NDB字典,而不是MySQL服务器的数据字典。

  • NDB盘数据:NDB现在,在连接到集群时,使用MySQL数据字典来确保表空间和日志文件组在所有集群SQL节点上的正确分布。

  • 的额外元数据属性NDBtables现在用于存储MySQL数据字典中的信息。因为这个信息明显大于先前存储在这里的二进制表示(a.frm文件,不再使用),此额外元数据的硬编码大小限制已增加。

    这个变化会对降级产生影响:尝试阅读NDB在NDB 8.0.14及更高版本中创建的表可能导致运行NDB 8.0.13或更早版本的数据节点在启动时失败NDB错误码2355恢复模式失败:永久错误,需要外部操作:资源配置错误。如果表元数据的大小超过6K(这是旧的限制),就会发生这种情况。在NDB 8.0.13及更早版本中创建的表可以被后续版本读取,没有任何问题。

    有关更多信息,请参见修改NDB表额外的元数据,以及参见MySQL数据字典.(错误# 27230681)

错误修复

  • 包装:所需的NDB头文件在重击而不是RPM包libndbclient-devel.(Bug #84580, Bug #26448330)

  • version_comment中未正确配置系统变量mysqld并返回泛型模式而不是正确的值。这影响了所有NDB集群二进制版本,除了. deb包。(错误# 29054235)

  • 尝试使用源代码进行构建-DWITH_NDBCLUSTER而且-WerrorGCC 8失败。(错误# 28707282)

  • 当将已删除的行从活动节点复制到刚开始的节点时,其中一个或多个行的全局检查点索引可能为零。如果此情况发生在由于撤消日志满而启动完整的本地检查点的同时,则LCP_SKIP为GCI = 0的行设置了位,导致数据节点计划外关闭。(错误# 28372628)

  • ndbmtd有时由于日志线程关闭而在退出时遇到挂起。(错误# 28027150)

  • NDB全限定表名的上限为128个字符。因为事实是mysqld的名字NDB使用格式的表database_name/catalog_name/table_name,在那里catalog_name总是def,则可能出现如下语句创建表在表名和数据库名都没有超过施加的63个字符限制的情况下失败NDB.在这种情况下提出的错误具有误导性,已予以取代。(错误# 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信号。(错误# 26574003)

  • ndb_restore返回-1,而不是在索引重建失败时返回预期的退出代码。(错误# 25112726)

  • 启动时,数据节点复制元数据,而本地检查点更新元数据。为了避免任何冲突,在复制元数据时暂停任何正在进行的LCP活动。当一个给定节点上的本地检查点暂停,而另一个也在重新启动的节点检查该节点上的一个完整LCP时,会出现问题;检查实际上导致LCP在元数据复制完成之前完成,因此提前结束了暂停。现在,在这种情况下,LCP完成检查等待完成一个暂停的LCP,直到元数据的复制完成,暂停在它开始的LCP中按预期结束。(错误# 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_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)

  • 在初始节点重新启动时,磁盘数据表和TwoPassInitialNodeRestartCopy启用,DBTUP在磁盘顺序中使用不安全的扫描。在这种情况下,不再使用这种扫描。(Bug #91724, Bug #28378227)

  • 检查旧LCP文件可以测试表版本,但这并不总是可靠的。现在,该检查不再依赖于表版本,而是将具有maxGCI比它的createGci.(Bug #91637, Bug #28346565)

  • 在某些情况下,对同一记录重复触发级联更新触发器,最终消耗所有可用的并发操作,导致错误233事务协调器中的超出操作记录(增加MaxNoOfConcurrentOperations).如果MaxNoOfConcurrentOperations如果设置了一个足够高的值来避免这种情况,则问题表现为数据节点消耗大量CPU,很可能最终导致超时。(Bug #91472, Bug #28262259)