21.5.5 执行 NDB 群集的滚动重启

本节讨论如何执行 NDB 群集安装的滚动重新启动,之所以这样称呼,是因为它涉及依次停止和启动(或重新启动)每个节点,以使群集本身保持运行状态。这通常是在滚动升级或滚动降级的一部分中完成的,在这种情况下,群集的高可用性是强制性的,不允许整个群集的停机时间。当我们提到升级时,此处提供的信息通常也适用于降级。

有多种原因可能导致需要重新启动滚动。这些将在接下来的几段中进行描述。

配置更改. 更改集群的配置,例如将 SQL 节点添加到集群,或将配置参数设置为新值。

NDB 群集软件升级或降级. 要将群集升级到 NDB 群集软件的较新版本(或将其降级到较旧的版本)。这通常称为“滚动升级”(或在还原到较旧版本的 NDB Cluster 时,称为“滚动降级”)。

更改节点主机. 对运行一个或多个 NDB 群集节点进程的硬件或 os 进行更改。

系统重置(集群重置). 重置集群,因为它已达到不良状态。在这种情况下,通常需要重新加载一个或多个数据节点的数据和元数据。可以通过以下三种方式之一来完成此操作:

  • 使用--initial选项启动每个数据节点进程(ndbd或可能是ndbmtd),这将强制数据节点清除其文件系统并从其他数据节点重新加载所有 NDB 群集数据和元数据。

  • 在执行重新启动之前,请使用ndb_mgm client START BACKUP命令创建备份。升级后,使用ndb_restore还原一个或多个节点。

有关更多信息,请参见第 21.5.8 节“ NDB 群集的在线备份”第 21.4.24 节“ ndb_restore-还原 NDB 群集备份”

资源恢复. 释放先前通过连续INSERTDELETE操作分配给 table 的内存,以供其他 NDB 群集 table 重用。

执行滚动重启的过程可以概括如下:

通过执行上一步,为ndb_mgmClient 端中的每个数据节点发出RESTART,可以更新某些节点配置参数。其他参数要求使用 ManagementClient 端STOP命令完全停止数据节点,然后通过适当地调用ndbdndbmtd可执行文件从系统 Shell 重新启动该节点。 (诸如kill之类的 shell 命令也可以在大多数 Unix 系统上用于停止数据节点进程,但是STOP命令是首选的,并且通常更简单。)

Note

在 Windows 上,您还可以使用 SC STOPSC START 命令,NET STOPNET START命令,或 Windows Service Manager 来停止和启动已作为 Windows 服务安装的节点(请参阅第 21.2.4.4 节“将 NDB 群集进程安装为 Windows 服务”)。

文档中针对每个节点配置参数指示了所需的重新启动类型。参见第 21.3.3 节“ NDB 群集配置文件”

  • 依次停止,重新配置,然后重新启动每个群集 SQL 节点(mysqld进程)。

NDB Cluster 支持某种灵活的 Sequences 来升级节点。升级 NDB 群集时,可以先升级 API 节点(包括 SQL 节点),然后再升级 Management 节点和/或数据节点。换句话说,允许您以任何 Sequences 升级 API 和 SQL 节点。这要遵守以下规定:

  • 此功能仅供在线升级的一部分使用。既不打算也不支持来自不同 NDB 群集版本的节点二进制文件的混合,以在生产环境中连续,长期使用。

  • 在升级任何数据节点之前,必须先升级所有 Management 节点。无论升级群集的 API 和 SQL 节点的 Sequences 如何,这仍然适用。

  • 在升级所有 Management 节点和数据节点之前,不得使用特定于“新”版本的功能。

除 NDB 引擎版本更改外,这还适用于任何可能适用的 MySQL Server 版本更改,因此在计划升级时请不要忘记考虑这一点。 (通常对于 NDB Cluster 的在线升级是正确的.)

任何 API 节点在节点重新启动期间都无法执行架构操作(例如数据定义语句)。部分由于此限制,在线升级或降级期间也不支持架构操作。

使用多个 Management 服务器重新启动滚动. 对具有多个 Management 节点的 NDB 群集执行滚动重新启动时,应记住ndb_mgmd检查是否正在运行其他 Management 节点,如果正在运行, ,尝试使用该节点的配置数据。为防止这种情况发生,并迫使ndb_mgmd重新读取其配置文件,请执行以下步骤:

无论在启动第一个ndb_mgmd时使用任何其他选项,都不应在第一个--reload之后启动任何剩余的ndb_mgmd进程。

  • 正常完成数据节点和 API 节点的滚动重启。

在执行滚动重新启动以更新集群的配置时,可以使用ndbinfo.nodestable 的config_generation列来跟踪哪些数据节点已使用新配置成功重新启动。参见第 21.5.14.28 节,“ ndbinfo 节点 table”