在筛选了 NDB API 事件文档和类注释后,我在 NdbEventOperation.hpp 中看到了这条注释:
/*
* Known Issues:
* - If a node failure has occured not all events will be recieved
* anymore. Drop NdbEventOperation and Create again after nodes are up
* again. Will be fixed in later versions
*/
这是否意味着如果Data节点发生故障,将不会收到 NDB 事件?
我已经测试了在运行 NDB API 事件侦听器程序时杀死数据节点,并且我仍在接收所有事件(在原型设计期间我现在只有 2 个事件)。
更新:
这里有一些更清楚的说明:
比如说,我们有一个由四台主机(n1,n2,n3,n4)组成的集群,有两个数据节点(n1,n2),一个管理节点(n3)和一个两个 SQL 节点(n3,n4) . 因此,如果数据节点出现故障(例如 n1),我会想象那些由 n1 处理的事件现在将由 n2 处理,因为集群事件是同步发生的。所以,我看不出我们会如何失去这些事件。
我想知道 NdbEventOperation.hpp 中的注释是指数据节点、管理节点还是 SQL 节点。
我也想知道这个问题是否已经修复(因为它在评论中说“它将在以后的版本中修复”)。
NdbEventOperation.hpp 中的这条评论看起来很糟糕,因为 MySQL 集群的整个概念都围绕着可用性和事件展开。如果集群中的数据节点出现故障,我无法相信某些事件将不会被接收。