重要的变化;NDB集群api:这个版本为NDB API引入了一个时代驱动的事件API,取代了早期基于gci的模型。这个API的新版本还简化了错误检测和处理,改进了对事件缓冲区内存使用情况的监控。
的新事件处理方法
Ndb
而且NdbEventOperation
由此更改添加的包括NdbEventOperation: getEventType2 ()
,pollEvents2 ()
,nextEvent2 ()
,getHighestQueuedEpoch ()
,getNextEventOpInEpoch2 ()
,getEpoch ()
,isEmptyEpoch ()
,isErrorEpoch
.的pollEvents ()
,nextEvent ()
,getLatestGCI ()
,getGCIEventOperations ()
,isConsistent ()
,isConsistentGCI ()
,getEventType ()
,getGCI ()
,getLatestGCI ()
,isOverrun ()
,hasError ()
,clearError ()
从同一版本开始的方法已弃用。一些(但不是所有)新方法充当已弃用方法的替代;并非所有已弃用的方法都映射到新方法。事件类,提供了旧方法与新方法对应的信息。
使用新API的错误处理不再使用dedicated
hasError ()
而且clearError ()
方法,如前所述,现在已弃用。为了支持这一改变,TableEvent
现在支持这些值TE_EMPTY
(空时代),TE_INCONSISTENT
(不一致的时代),TE_OUT_OF_MEMORY
(事件缓冲区内存不足)。的引入也改进了事件缓冲区内存管理
get_eventbuffer_free_percent ()
,set_eventbuffer_free_percent ()
,get_event_buffer_memory_usage ()
方法,以及一个新的NDB API错误超出范围的免费百分比(错误代码4123)。控件现在可以在应用程序中表示内存缓冲区使用情况EventBufferMemoryUsage
数据结构,并从MySQL客户端应用程序通过读取ndb_eventbuffer_free_percent
系统变量。有关的详细信息,请参见
Ndb
而且NdbEventOperation
列出的方法。另请参阅事件:TableEvent.NDB集群api:两个新的示例程序,演示读取和写入
字符
,VARCHAR
,VARBINARY
列值,已添加到存储/ ndb / ndbapi-examples
在MySQL NDB集群源树中。有关这些程序的详细信息(包括源代码清单),请参见NDB API简单数组示例,NDB API简单数组示例使用适配器.现在对系统重新启动期间发生的内部状态(如等待节点ID分配和主接管全局和本地检查点)执行额外的日志记录。(Bug #74316, Bug #19795029)
添加了
operations_per_fragment
表ndbinfo
信息数据库。使用这个表,您现在可以获得在给定片段(或片段副本)上执行的操作计数。这些操作包括读、写、更新和删除,执行时执行的扫描和索引操作,以及拒绝的操作,以及与在给定的片段副本上扫描和返回的行相关的信息。该表还提供了有关被解释为属性值的程序及其返回值的信息。添加了
MaxParallelCopyInstances
数据节点配置参数。在重新启动复制阶段使用的并行度(通常ldm的数量最多为16)过大并导致系统过载的情况下,可以使用此参数通过减少所使用的并行度来覆盖默认行为。
NDB磁盘数据:在某些罕见的情况下,对大型Disk Data表的许多行进行更新可能会导致节点故障。如果在Disk Data表上的非常大的事务中观察到此类问题,现在可以通过提高的值来增加分配给磁盘页缓冲区内存的页条目的数量
DiskPageBufferEntries
本次发布新增数据节点配置参数。(错误# 19958804)NDB磁盘数据:在某些情况下,期间
DICT
主服务器接管时,新的主服务器可能会在试图前滚正在进行的架构事务时崩溃。(Bug #19875663, Bug #74510)NDB集群api:可以删除一个
Ndb_cluster_connection
对象的实例Ndb
使用引用。现在,Ndb_cluster_connection
析构函数等待所有相关的Ndb
在完成之前释放的对象。(错误# 19999242)参考资料:请参见:Bug #19846392。
全局检查点提交和保存协议可能会由于各种原因而延迟,包括磁盘I/O慢。的
DIH
主节点监视这两个协议的进程,并可以通过在协议延迟达到这个最大值时杀死导致延迟的节点来强制协议暂停。这DIH
主GCP监控机制在每个主节点上只执行一次任务;也就是说,它在检测和处理GCP停止后无法继续监控。(错误# 20128256)参考资料:请参见:Bug #19858151, Bug #20069617, Bug #20062754。
运行时mysql_upgrade在一个MySQL NDB集群的SQL节点上,预期的下降
performance_schema
而是在连接到集群的所有SQL节点上执行该节点上的数据库。(错误# 20032861)当一个
Alter table algorithm = inplace…添加一列
语句自动更改列的COLUMN_FORMAT
从固定
来动态
现在包括格式已更改的列的名称。(Bug #20009152, Bug #74795)本地检查点扫描片段看门狗和全局检查点监控器在参与各自的协议时,当某个节点太慢时,它们都可以排除它。这种排除是通过简单地要求故障节点关闭来实现的,如果出现延迟(无论出于什么原因),可能会延长其他未受影响节点的GCP或LCP暂停的持续时间。
为了尽量减少这个时间,两个协议都添加了隔离机制,在此机制下,任何其他活动节点在预定的时间后强制断开故障节点。这允许故障节点有机会在可能的情况下优雅地关闭(在记录调试和其他信息之后),但限制了其他节点等待故障发生的时间。现在,一旦剩余的活动节点处理了任何故障节点的断开连接,它们就可以开始故障处理并重新启动相关的协议或协议,即使故障节点需要很长时间才能关闭。(错误# 19858151)
参考资料:请参见:Bug #20128256, Bug #20069617, Bug #20062754。
的设置时用于线程配置的值的矩阵
MaxNoOfExecutionThreads
配置参数已得到改进,以支持更多的LDM线程。看到多线程配置参数(ndbmtd),以了解更多有关更改的信息。(Bug #75220, Bug #20215689)当一个新节点在连接到总统但没有连接到任何其他活动节点之后失败,然后重新连接并再次启动时,没有看到原始连接的活动节点将保留旧的状态信息。这导致活动节点向总统发送冗余信号,导致它失败。(Bug #75218, Bug #20215395)
在
NDB
内核,它是可能的TransporterFacade
对象来在发送缓冲区所包含的数据时重置缓冲区,这可能会导致竞争条件。(Bug #75041, Bug #20112981)mysql_upgrade删除并重新创建
ndbinfo
数据库及其表符合预期。(Bug #74863, Bug #20031425)由于缺少内存屏障,MySQL的NDB集群程序如ndbmtd没有在
权力
平台。(Bug #74782, Bug #20007248)尽管存在一些防止信号缓冲区过载的保护机制,但在某些情况下仍有可能这样做。此修复添加了块级支持
NDB
内核(在SimulatedBlock
),使信号缓冲过载保护比个别实施时更可靠。(Bug #74639, Bug #19928269)在本地检查点期间复制元数据会导致节点重启时间变化很大,这可能会导致很难诊断重启问题。这个问题的修复引入了信号(包括
PAUSE_LCP_IDLE
,PAUSE_LCP_REQUESTED
,PAUSE_NOT_IN_LCP_COPY_META_DATA
)来暂停LCP执行并刷新LCP报告,这样当LCP在重启期间陷入停顿时,就有可能阻塞LCP报告。(Bug #74594, Bug #19898269)当从angel进程重新启动数据节点(即在节点故障之后)时,可以在故障节点的故障处理实际完成之前为其分配一个新的节点ID。(Bug #74564, Bug #19891507)
在
NDB
在7.4版本中,节点故障处理可能需要在多达64个片段上完成检查点。(这个检查点是由DBLQH
内核块。)由于要求主接管等待所有这类检查点的完成,在这种情况下导致完成时间过长。为了解决这些问题
DBLQH
内核块现在可以在完成任何正在进行的片段检查点之前报告它已经为主接管做好了准备,并且可以在系统完成主接管时继续处理这些检查点。(Bug #74320, Bug #19795217)当节点仍在等待完成数据分布和数据字典的复制时,本地检查点在节点重启时启动的时间有时比必要的时间早。(Bug #74319, Bug #19795152)
为了确定节点何时重新启动,从而知道何时加速本地检查点的检查有时会报告误报。(Bug #74318, Bug #19795108)
的不同列中的值
ndbinfo
表disk_write_speed_aggregate
而且disk_write_speed_aggregate_node
使用不同的字节数来报告。现在所有这些列都以字节为单位显示值。此外,此修正修正了在计算中使用的标准偏差时产生的错误
std_dev_backup_lcp_speed_last_10sec
,std_dev_redo_speed_last_10sec
,std_dev_backup_lcp_speed_last_60sec
,std_dev_redo_speed_last_60sec
列的ndbinfo.disk_write_speed_aggregate
表格(Bug #74317, Bug #19795072)内部方法中的递归
Dblqh: finishScanrec ()
导致尝试创建两个具有相同头部的列表迭代器。在对7.4版本的扫描进行优化的工作中引入了这种回归NDB
存储引擎。(Bug #73667, Bug #19480197)发送失败后,传输程序发送缓冲区未正确更新。(Bug #45043, Bug #20113145)