在NDB集群7.4中,对NDB集群进行了以下改进:
冲突检测和解决增强。保留的列名命名空间
NDB美元
现在用于异常表元列,允许记录主表列的任意子集,即使它们不是原始表的主键的一部分。不再需要记录完整的原始主键,因为现在只根据名称和类型对异常表列进行匹配。现在还可以在异常表中记录不属于主表主键的列的值。
读取冲突检测现在是可能的。冲突事务读取的所有行都被标记,并记录在异常表中。在同一事务中插入的行不包含在读取或记录的行中。这种读取跟踪依赖于片段副本具有一个需要设置的独占读锁
ndb_log_exclusive_reads
提前。看到阅读冲突检测和解决,以获取更多信息和示例。仍然支持现有的异常表。有关更多信息,请参见第18.7.11节“NDB集群复制冲突解决”.
循环(”active - active”)复制的改进。当使用圆形或”active - active”NDB集群复制拓扑,您可以将主角色或从角色之一分配给给定的NDB集群
ndb_slave_conflict_role
服务器系统变量,当从充当主的NDB集群进行故障转移时,或使用冲突检测和解决时,可以使用该变量NDB EPOCH2美元()
而且NDB EPOCH2_TRANS美元()
(NDB 7.4.2及更高版本),支持删除-删除冲突处理。的描述
ndb_slave_conflict_role
变量,以及NDB EPOCH2美元(),以查询更多资料。另请参阅第18.7.11节“NDB集群复制冲突解决”.每个片段的内存使用情况报告。您现在可以从。获取单个NDB集群片段的内存使用情况的数据
memory_per_fragment
视图,在NDB 7.4.1中添加到ndbinfo
信息数据库。有关更多信息,请参见第18.6.14.17节“ndbinfo memory_per_fragment表”.节点重新改进。NDB Cluster 7.4包含了许多改进,减少了数据节点重启所需的时间。这些在下面的列表中描述:
在节点启动时分配的内存在被触及之前不能被使用,这导致操作系统留出所需的实际物理内存。在以前的NDB集群版本中,接触分配的每一页内存的过程都是单线程的,这使得它相对耗时。这个过程现在已经用多线程重新实现了。在使用16个线程的测试中,观察到的触摸时间是单线程的3倍。
增加地方检查点的并行化;在NDB集群7.4中,lcp现在支持32个片段,而不是以前的2个。这极大地提高了CPU的利用率,否则这些CPU将无法使用,并且可以使lcp的速度提高10倍;这种加速反过来又可以大大提高节点重启时间。
节点和系统重新启动期间用于节点复制阶段的并行化程度可以在NDB 7.4.3及以后的版本中通过设置
MaxParallelCopyInstances
数据节点配置参数设置为非零值。new提供了磁盘写入的报告
ndbinfo
表disk_write_speed_base
,disk_write_speed_aggregate
,disk_write_speed_aggregate_node
,它们提供关于正在使用的每个LDM线程的磁盘写速度的信息。该版本还添加了数据节点配置参数
MinDiskWriteSpeed
,MaxDiskWriteSpeed
,MaxDiskWriteSpeedOtherNodeRestart
,MaxDiskWriteSpeedOwnRestart
当当前节点、另一个节点或没有节点重新启动时,控制lcp和备份的写速度。方法替代磁盘写入的配置
DiskCheckpointSpeed
而且DiskCheckpointSpeedInRestart
配置参数。这两个参数现在已弃用,在未来的NDB集群版本中将被删除。通过将对性能至关重要的点上发现的延迟信号替换为正常(未延迟)信号,可以更快地从备份中恢复NDB集群。消除或替换这些不必要的延迟信号将显著减少备份NDB集群或从备份恢复NDB集群所需的时间。
的几个内部方法
NDB
接收线程都进行了优化,提高了SQL处理的效率NDB
.接收线程可能每秒要处理数百万条接收记录,因此在从NDB集群数据节点检索记录时,它不能执行不必要的工作或浪费资源是至关重要的。
改进了NDB集群重启和启动阶段的报告。的
restart_info
表(包含在ndbinfo
从NDB 7.4.2开始的信息数据库)提供关于节点和系统重启的当前状态和定时信息。NDB集群启动阶段的报告和日志记录在启动过程中也比以前提供了更频繁和具体的打印输出。看到18.6.4节“NDB集群启动阶段总结”,以查询更多资料。
NDB API:新的事件API。NDB 7.4.3引入了一个时代驱动的事件API,取代了早期的基于gci的模型。新版本的API还简化了错误检测和处理。这些变化是通过在NDB API中实现一些新的方法来实现的
Ndb
而且NdbEventOperation
,弃用这两个类的其他几个方法,并向事件:TableEvent
.添加的事件处理方法
Ndb
在NDB 7.4.3中pollEvents2 ()
,nextEvent2 ()
,getHighestQueuedEpoch ()
,getNextEventOpInEpoch2 ()
.的Ndb
方法pollEvents ()
,nextEvent ()
,getLatestGCI ()
,getGCIEventOperations ()
,isConsistent ()
,isConsistentGCI ()
不赞成从同一版本开始使用。NDB 7.4.3添加
NdbEventOperation
事件处理方法getEventType2 ()
,getEpoch ()
,isEmptyEpoch ()
,isErrorEpoch
;它废止getEventType ()
,getGCI ()
,getLatestGCI ()
,isOverrun ()
,hasError ()
,clearError ()
.虽然一些(但不是所有)新方法直接替换了已弃用的方法,但并非所有已弃用的方法都映射到新方法。事件类,提供了哪些旧方法对应于新方法的信息。
使用新API的错误处理不再使用dedicated
hasError ()
而且clearError ()
方法,这些方法现在已弃用(因此在NDB Cluster的未来版本中将被删除)。为支持此更改,列表TableEvent
类型现在包含值TE_EMPTY
(空时代),TE_INCONSISTENT
(不一致的时代),TE_OUT_OF_MEMORY
(数据不一致)。事件缓冲区管理方面的改进也通过实现新的
get_eventbuffer_free_percent ()
,set_eventbuffer_free_percent ()
,get_event_buffer_memory_usage ()
方法。内存缓冲区的使用现在可以用Ndb: EventBufferMemoryUsage
.的ndb_eventbuffer_free_percent
system变量也在NDB Cluster 7.4中实现,它可以从MySQL客户端应用程序中检查事件缓冲区的内存使用情况。有关详细信息,请参阅
Ndb
而且NdbEventOperation
列出的方法。另请参阅事件:TableEvent,以及Ndb: EventBufferMemoryUsage.每个片段的操作信息。在NDB 7.4.3及更高版本中,可以很容易地使用
operations_per_fragment
表中ndbinfo
信息数据库。这包括读、写、更新和删除操作,以及这些操作执行的扫描和索引操作。中还显示了关于拒绝操作的信息,以及关于从给定片段副本中扫描和返回的行的信息operations_per_fragment
.该表还提供了有关用作属性值的解释程序及其返回值的信息。——ndb-log-fail-terminate选项。从NDB 7.4.28开始,当SQL节点无法完全记录所有行事件时,可以导致它终止。这可以通过开始来完成mysqld与
——ndb-log-fail-terminate
选择。NDB程序-去除ndbt依赖。的依赖性
NDB
的实用程序NDBT
库已被删除。该库用于内部开发,正常使用时不需要;将其包含在这些程序中可能会在测试时导致不必要的问题。此处列出了受影响的程序,以及
NDB
移除依赖项的版本:ndb_restore,在NDB 7.4.24
ndb_show_tables,在NDB 7.4.28
ndb_waiter,在NDB 7.4.28
这一变化对用户的主要影响是这些程序不再打印
NDBT_ProgramExit -
在运行完成之后。当升级到指定的版本时,应该更新依赖于这种行为的应用程序以反映更改。状态
结束ClusterJPA支持。从NDB 7.4.16开始不再支持ClusterJPA;它的源代码和二进制文件已经从NDB集群发行版中删除。
自动安装程序弃用和删除。基于web的MySQL NDB集群自动安装工具(ndb_setup.py)在NDB 7.4.30中已弃用,在NDB 7.4.31及以后版本中被移除。它不再受到支持。
Ndbmemcache弃用和移除。
ndbmemcache
不再受支持。ndbmemcache
从NDB 7.4.3开始已弃用,计划在NDB 7.4.31中删除。node . js支持移除。从NDB集群7.4.30版本开始,NDB 7.4对Node.js的支持已经被移除。
NDB集群仅在NDB 8.0中支持Node.js。
MySQL集群管理器也支持NDB集群7.4,它提供了一个高级的命令行界面,可以简化许多复杂的NDB集群管理任务。看到MySQL集群管理器1.4.8用户手册,以查询更多资料。