21.5.4 NDB 群集开始阶段的摘要

本节提供了启动 NDB Cluster 数据节点时所涉及步骤的简化概述。有关更完整的信息,请参阅NDB内部指南* NDB 群集开始阶段

这些阶段与 ManagementClient 端中node_id STATUS命令的输出中报告的阶段相同(请参阅第 21.5.1 节“ NDB 群集 ManagementClient 端中的命令”)。这些开始阶段也记录在ndbinfo.nodestable 的start_phase列中。

启动类型. 有几种不同的启动类型和模式,如下列 table 所示:

  • 初始启动. 集群以所有数据节点上的干净文件系统启动。在群集首次启动时,或者使用--initial选项重新启动所有数据节点时,都会发生这种情况。

Note

使用--initial重新启动节点时,不会删除磁盘数据文件。

  • 系统重启. 集群启动并读取存储在数据节点中的数据。当集群在使用后已经关闭时,或者希望集群从上次停止的位置恢复操作时,会发生这种情况。

  • 节点重启. 这是集群本身正在运行时集群节点的在线重启。

  • 初始节点重新启动. 这与节点重新启动相同,不同之处在于该节点被重新初始化并使用干净的文件系统启动。

设置和初始化(阶段-1). 在启动之前,必须初始化每个数据节点(ndbd进程)。初始化包括以下步骤:

  • 获取节点 ID

  • 获取配置数据

  • 分配用于节点间通信的端口

  • 根据从配置文件获得的设置分配内存

数据节点或 SQL 节点首次连接到 Management 节点时,它将保留集群节点 ID。为了确保没有其他节点分配相同的节点 ID,将保留该 ID,直到该节点设法连接到群集并且至少有一个ndbd报告该节点已连接。节点 ID 的这种保留由所讨论的节点与ndb_mgmd之间的连接来保护。

在初始化每个数据节点之后,可以 continue 集群启动过程。此处列出了群集在此过程中经历的阶段:

  • 阶段 0. NDBFSNDBCNTR块开始(请参见NDB 内核块)。在以--initial选项启动的数据节点上将清除数据节点文件系统。

  • 阶段 1. 在此阶段,将启动所有剩余的NDB内核块。构建 NDB 群集连接,构建块间通信,并启动心跳。在节点重新启动的情况下,还将检查 API 节点连接。

Note

当一个或多个节点在阶段 1 中挂起而其余一个或多个节点在阶段 2 中挂起时,这通常 table 示网络有问题。造成此类问题的一个可能原因是一台或多台具有多个网络接口的群集主机。导致此状况的另一个常见问题源是阻塞群集节点之间进行通信所需的 TCP/IP 端口的阻塞。在后一种情况下,这通常是由于防火墙配置错误造成的。

  • 第 2 阶段. NDBCNTR内核块检查所有现有节点的状态。选择主节点,并初始化集群模式文件。

  • 阶段 3. DBLQHDBTC内核块构建了它们之间的通信。确定启动类型;如果这是重新启动,则DBDIH块获得执行重新启动的权限。

  • 阶段 4. 对于初始启动或初始节点重新启动,将创建重做日志文件。这些文件的数量等于NoOfFragmentLogFiles

对于系统重启:

  • 读取一个或多个模式。

    • 从本地检查点读取数据。

    • 应用所有重做信息,直到到达最新的可还原全局检查点。

要重启节点,请找到重做日志的末尾。

  • 阶段 5. 数据节点启动的大多数与数据库有关的部分都是在此阶段执行的。对于初始启动或系统重新启动,将执行本地检查点,然后执行全局检查点。在此阶段开始定期检查内存使用情况,并执行所有必需的节点接管。

  • 阶段 6. 在此阶段,定义并设置了节点组。

  • 阶段 7. 已选择仲裁器节点并开始运行。设置下一个备份 ID,以及备份磁盘的写入速度。达到此开始阶段的节点标记为Started。现在,API 节点(包括 SQL 节点)可以连接到群集。

  • 阶段 8. 如果这是系统重新启动,则会重建所有索引(通过DBDIH)。

  • 阶段 9. 重置节点内部启动变量。

  • 阶段 100(过时). 以前,在节点重启或初始节点重启期间,API 节点可以连接到该节点并开始接收事件。当前,此阶段为空。

  • 阶段 101. 此时,在节点重启或初始节点重启中,事件传递将移交给加入集群的节点。新加入的节点负责将其主要数据传递给订户。此阶段也称为SUMA切换阶段。

完成此过程的初始启动或系统重新启动后,将启用事务处理。对于节点重启或初始节点重启,启动过程的完成意味着该节点现在可以充当事务协调器。