NDB群集启动阶段摘要
本节提供了启动NDB Cluster数据节点时所涉及步骤的简化概述。有关更完整的信息,请参阅《内部指南》中的NDB群集启动阶段。NDB
这些阶段node_id STATUS
与管理客户端中命令的输出中报告的阶段相同(请参见“ NDB群集管理客户端中的命令”)。这些开始阶段也在表的start_phase
列中报告ndbinfo.nodes
。
起始类型。有几种不同的启动类型和模式,如下列表所示:
初始开始。群集从所有数据节点上的干净文件系统开始。在群集第一次启动时,或者使用该
--initial
选项重新启动所有数据节点时,都会发生这种情况。注意
使用重启节点时,不会删除磁盘数据文件
--initial
。- 系统重启。集群启动并读取存储在数据节点中的数据。当集群在使用后已经关闭时,或者希望集群从上次停止的位置恢复操作时,会发生这种情况。
- 节点重启。这是集群本身正在运行时集群节点的联机重新启动。
- 初始节点重新启动。这与节点重新启动相同,只是重新初始化节点并使用干净的文件系统启动该节点。
设置和初始化(阶段-1)。在启动之前,必须初始化每个数据节点(ndbd进程)。初始化包括以下步骤:
- 获取节点ID
- 获取配置数据
- 分配用于节点间通信的端口
- 根据从配置文件获得的设置分配内存
数据节点或SQL节点首次连接到管理节点时,它将保留集群节点ID。为确保没有其他节点分配相同的节点ID,将保留该ID,直到该节点设法连接到群集并且至少一个ndbd报告该节点已连接为止。节点ID的这种保留由所讨论的节点与ndb_mgmd之间的连接来保护。
在初始化每个数据节点之后,可以继续集群启动过程。此处列出了群集在此过程中经历的阶段:
- 0期的
NDBFS
和NDBCNTR
块启动(见 NDB内核模块)。在使用--initial
option 开头的那些数据节点上清除了数据节点文件系统。 阶段1。在此阶段,
NDB
将启动所有剩余的内核块。建立NDB群集连接,建立块间通信,并启动心跳。在节点重新启动的情况下,还将检查API节点连接。注意
当一个或多个节点在阶段1中挂起而其余一个或多个节点在阶段2中挂起时,这通常表示网络有问题。造成此类问题的一个可能原因是一台或多台具有多个网络接口的群集主机。导致这种情况的另一个常见问题源是阻塞群集节点之间通信所需的TCP / IP端口。在后一种情况下,这通常是由于防火墙配置错误造成的。
- 第2阶段的
NDBCNTR
核心模块检查所有现有节点的状态。选择主节点,并初始化集群模式文件。 - 第3阶段的
DBLQH
和DBTC
内核模块建立它们之间的通信。确定启动类型;如果这是重新启动,则该DBDIH
块获得执行重新启动的权限。 阶段4。对于初始启动或初始节点重新启动,将创建重做日志文件。这些文件的数量等于
NoOfFragmentLogFiles
。对于系统重启:
- 读取一个或多个模式。
- 从本地检查点读取数据。
- 应用所有重做信息,直到到达最新的可还原全局检查点。
要重启节点,请找到重做日志的末尾。
- 阶段5。在此阶段中执行数据节点启动的大多数与数据库有关的部分。对于初次启动或系统重新启动,将执行本地检查点,然后执行全局检查点。在此阶段开始定期检查内存使用情况,并执行所有必需的节点接管。
- 阶段6。在此阶段中,定义并设置了节点组。
- 阶段7。选择仲裁节点并开始运行。设置下一个备份ID,以及备份磁盘的写入速度。达到此开始阶段的节点标记为
Started
。现在,API节点(包括SQL节点)可以连接到群集。 - 阶段8。如果这是系统重新启动,则将重建所有索引(由
DBDIH
)。 - 阶段9。重置节点内部启动变量。
- 阶段100(过时)。以前,正是在节点重启或初始节点重启期间,API节点可以连接到该节点并开始接收事件。当前,此阶段为空。
- 阶段101。此时,在节点重新启动或初始节点重新启动中,事件传递将移交给加入集群的节点。新加入的节点负责将其主要数据传递给订户。此阶段也称为
SUMA
切换阶段。
完成此过程的初始启动或系统重新启动后,将启用事务处理。对于节点重新启动或初始节点重新启动,启动过程的完成意味着该节点现在可以充当事务协调器。