包装;Solaris:编译的ndbmtd在32位的Solaris 10和11上失败
x86
这些平台的二进制发行版中不包含这个二进制版本。(错误# 16620938)微软的Windows操作系统:中用于计时调度器事件的计时器
NDB
内核进行了重构,部分是为了确保它们在所有平台上都是单调的。特别地,在Windows上,事件间隔以前是使用从GetSystemTimeAsFileTime ()
,它直接从系统时间(”挂钟”),并可能任意向后或向前重置,导致假看门狗或心跳告警,甚至节点关机。缺乏计时器的单调性还可能导致在备份和全局检查点期间磁盘写速度变慢。为了解决这个问题,Windows实现现在使用QueryPerformanceCounters ()
而不是GetSystemTimeAsFileTime ()
.如果在启动数据节点时没有发现单调计时器,则记录一个警告。此外,在所有平台上,现在会在编译时对可用的系统单调计时器执行检查,如果找不到,则构建失败;请注意,
CLOCK_HIGHRES
现在支持作为CLOCK_MONOTONIC
如果后者不可用。(错误# 17647637)NDB盘数据:当使用磁盘数据表和ndbmtd数据节点时,撤销缓冲区可能会过载,导致数据节点崩溃。当使用大小约为8K或更大的Disk Data列时,更有可能遇到此问题。(错误# 16766493)
NDB集群接口:
UINT_MAX64
被Visual Studio 2010视为有符号的值。为了防止这种情况发生,现在显式地将值定义为unsigned。(错误# 17947674)参考文献:参见:Bug #17647637。
NDB集群接口:这是有可能的
Ndb
对象在初始化之前接收用于处理的信号,这会导致线程交错,并且在执行调用时可能出现数据节点故障Ndb: init ()
.为了防止这种情况的发生,现在当它开始接收到的信号Ndb
对象在实际处理任何信号之前正确初始化。(错误# 17719439)NDB集群接口:由于缺少包含指令,示例NDB API程序文件编译失败。(Bug #17672846, Bug #70759)
NDB集群接口:的两个不同实例的应用程序
Ndb_cluster_connection
,尝试使用第二个连接对象向自身发送信号,但这些信号被阻塞,直到为该连接对象显式调用析构函数。(错误# 17626525)这个问题是Bug #16595838的回归。
中断外键的删除可能导致底层表损坏。(错误# 18041636)
在一些平台上的单调计时器可能会遇到问题,这可能会导致单调时钟进行小的时间跳回。这是由于多个CPU核之间的时钟不完全同步,通常不会对调度器和看门狗机制产生不利影响;因此,我们通过降低反计时保护的严格程度来处理其中一些情况,尽管我们继续确保反计时小于10毫秒。此修正还删除了几个反勾的检查,从而使反勾变得多余。(错误# 17973819)
在某些特定的情况下,在具有两个SQL节点的集群中,其中一个可能挂起,即使在杀死SQL节点后也不能再次访问mysqld处理并重新启动它。(Bug #17875885, Bug #18080104)
参考文献:参见:Bug #17934985。
某些平台对单调计时器的支持不足或缺乏支持,导致多线程数据节点的作业调度器处理延迟信号的问题。这些平台上的差异(计时器跳跃)现在以与单线程版本相同的方式处理多线程数据节点进程。(错误# 17857442)
参考文献:参见Bug #17475425, Bug #17647637。
在某些情况下,与
ndb_join_pushdown
启用后,可以从有效的查询中获取错误获取错误290“TC中的密钥损坏,无法从NDBCLUSTER进行xfrm”尽管数据实际上并没有被破坏。这是确定的
零
在一个VARCHAR
列可用于构造查找键,但由于零
不等于任何其他值,则可以直接取消这种查找。这零
查找又会导致虚假的错误消息。此修正利用了键查找与
零
从来没有找到任何匹配的行,等等NDB
不尝试执行会导致错误的查找。(错误# 17845161)本地检查点延迟看门狗跟踪使用系统调度程序执行LCP超时检查的次数,并使用该计数检查超时条件,但这导致了许多问题。为了克服这些限制,对LCP看门狗进行了重构,以跟踪它自己的开始时间,并在每次调用它时通过读取(真实的)时钟来计算经过的时间。(错误# 17842035)
参考文献:参见:Bug #17647469。
在某些情况下,理论上有可能有一些内部的输出函数
NDB
提供未初始化缓冲区作为输出的代码。现在,在这种情况下,取而代之的是打印换行符。(Bug #17775602, Bug #17775772)的使用
作用是()
函数NDB
中的多线程代码导致其他不确定的失败ndbmtd.此修复将替换此函数,该函数在许多平台上使用多个线程之间共享的缓冲区localtime_r ()
,它可以分配给它自己的缓冲区。(错误# 17750252)当使用单线程(ndbd)数据节点
RealTimeScheduler
启用时,CPU不会像预期的那样,每10毫秒临时降低它的调度优先级为正常,给其他非实时线程一个运行的机会。(错误# 17739131)在选择仲裁员期间,
QMGR
(见QMGR区块)经过一系列的状态,其中的前几个(按顺序)是零
,初始化
,找到
,PREP1
,PREP2
,开始
.中发生的仲裁选择超时检查找到
状态,即使对应的计时器直到QMGR
达到了PREP1
而且PREP2
州。试图读取结果未初始化的时间戳值可能会导致false找不到仲裁器,集群不是分区安全的警告。此修复程序将仲裁超时计时器的设置移动到
初始化
状态,以便稍后在期间读取该值找到
总是初始化的。(错误# 17738720)全局检查点延迟看门狗跟踪使用系统调度器执行GCP延迟检查的次数,并使用该计数检查超时条件,但这导致了许多问题。为了克服这些限制,对GCP看门狗进行了重构,以跟踪它自己的开始时间,并在每次调用它时通过读取(真实的)时钟来计算经过的时间。
此外,现在处理任何倒勾(在任何情况下都很罕见)的方法是将倒勾时间作为新的当前时间,并将此轮的运行时间计算为0。最后,向前跳跃可能会立即使看门狗计时器过期,通过不计算超过看门狗计时器请求的延迟时间的运行时间,可以减少任何不良影响。(错误# 17647469)
参考文献:参见Bug #17842035。
的警告之间的间隔(预期为10秒)的长度
GCP_COMMIT
当GCP进程看门狗没有检测到全局检查点中的进度时,并不总是正确计算进度。(错误# 17647213)试图删除外键约束使用的索引导致数据节点故障。在这种情况下,用于执行删除的语句会失败。(错误# 17591531)
在某些罕见的情况下,在事务提交时
Ndb
对象在事务协调器(DBTC
内核块)发送COMMIT_CONF
信号;NDB
发送邮件失败COMMIT_ACK
的内存泄漏NDB
内核稍后可能导致节点故障。现在一个
Ndb
对象才释放COMMIT_CONF
信号已经收到了。(错误# 16944817)对象的查询时失去与管理节点或数据节点的连接
ndbinfo.memoryusage
表正在进行中,导致发出查询的SQL节点失败。(Bug #14483440, Bug #16810415)的ndbd_redo_log_reader实用程序现在支持
——帮助
选择。使用此选项将导致程序打印基本使用信息,然后退出。(Bug #11749591, Bug #36805)