25.6.4 NDB 集群启动阶段摘要
本节提供了简化的NDB集群数据节点启动步骤概述。更多详细信息,请参阅NDB 集群启动阶段,在《NDB
Internals Guide》中。
这些阶段与管理客户端中的
命令的输出相同(参见第25.6.1节,“NDB集群管理客户端中的命令”)。这些启动阶段也在node_id
STATUSndbinfo.nodes
表的start_phase
列中报告。
启动类型。 有几种不同的启动类型和模式,如下所示:
设置和初始化(阶段-1)。 在启动之前,每个数据节点(ndbd 进程)必须被初始化。初始化包括以下步骤:
-
获取节点ID
-
获取配置数据
-
为节点间通信分配端口
-
根据配置文件设置分配内存
当一个数据节点或SQL节点首次连接到管理节点时,它会保留一个集群节点ID。为了确保没有其他节点分配相同的节点ID,这个ID在节点成功连接到集群并至少有一个ndbd 报告该节点已连接时才会释放。这个保留节点ID的过程由连接到管理节点的节点及其与ndb_mgmd 的连接保护。
在每个数据节点初始化后,集群启动过程可以继续进行。该过程中集群经过的阶段如下所列:
-
第0阶段。
NDBFS
和NDBCNTR
块开始运行。在使用--initial
选项启动的数据节点上,会清除数据节点文件系统。 -
第1阶段。 在这个阶段中,所有剩余的
NDB
核心块被启动。NDB 集群连接建立,间接块之间的通信开始,并启动心跳。在节点重启的情况下,也会检查API节点连接。Note当一或多个节点在第1阶段卡住,而其余节点则在第2阶段卡住时,这通常表明存在网络问题。这种情况可能是由集群主机有多个网络接口引起的,也可能是由于阻塞了用于集群节点之间通信所需的TCP/IP端口。这通常是由配置不当的防火墙造成的。
-
第2阶段。
NDBCNTR
核心块检查所有现有节点的状态。选择主节点,并初始化集群架构文件。 -
阶段3.
DBLQH
和DBTC
内核块设置它们之间的通信。启动类型被确定;如果这是一个重启,DBDIH
块获得执行重启的许可。 -
阶段4. 对于初始启动或初始节点重启,redo日志文件被创建。这些文件的数量等于
NoOfFragmentLogFiles
。对于系统重启:
-
读取架构或架构集。
-
从本地检查点读取数据。
-
将所有redo信息应用到最新可恢复的全局检查点之前。
对于节点重启,找到redo日志的尾部。
-
-
阶段5. 数据节点启动的大部分数据库相关工作在这个阶段进行。对于初始启动或系统重启,本地检查点会被执行,然后是全局检查点。在这个阶段开始,内存使用的周期性检查也开始,并且如果需要,将会进行节点接管。
-
阶段6. 在这个阶段,节点组被定义并设置。
-
阶段7. 仲裁节点被选定并开始工作。下一个备份ID被设置,以及备份磁盘写入速度。到达这个启动阶段的节点将会标记为
Started
。现在,API节点(包括SQL节点)可以连接到集群。 -
第8阶段. 如果这是一个系统重启,所有索引都会被重建(由
DBDIH
执行)。 -
第9阶段. 节点内部启动变量被重置。
-
第100阶段(已废弃)。 以前,在节点重启或初始节点重启期间,API节点可以连接到节点并开始接收事件。目前,这个阶段为空。
-
第101阶段. 在节点重启或初始节点重启过程中,此时点在事件分发被交由加入集群的节点。新加入的节点负责将其主要数据传递给订阅者。这一阶段也称为
SUMA
交接阶段。
在完成初始启动或系统重启过程后,事务处理就被启用。对于节点重启或初始节点重启,启动过程的完成意味着节点现在可以作为事务协调器工作。