本节讨论如何执行 滚动重启 NDB Cluster 安装,之所以称为滚动重启,是因为它涉及依次停止和启动(或重启)每个节点,从而使集群本身保持运行。 这通常作为 滚动升级 或 滚动降级 的一部分进行,在这些情况下,集群的高可用性是强制性的,并且不允许集群整体停机。 在我们提到升级时,这里提供的信息通常也适用于降级。
滚动重启可能很受欢迎,原因有很多。 下面几段文字对此进行了描述。
配置更改。 要对集群的配置进行更改,例如向集群添加 SQL 节点,或将配置参数设置为新值。
NDB Cluster 软件升级或降级。 要将集群升级到 NDB Cluster 软件的较新版本(或将其降级到较旧版本)。 这通常被称为 “滚动升级”(或 “滚动降级”,当恢复到较旧版本的 NDB Cluster 时)。
节点主机上的更改。 要对运行一个或多个 NDB Cluster 节点进程的硬件或操作系统进行更改。
系统重置(集群重置)。 要重置集群,因为它已达到不可取的状态。 在这种情况下,通常需要重新加载一个或多个数据节点的数据和元数据。 这可以通过以下三种方式完成
使用 ndbd 或 ndbmtd 启动每个数据节点进程,并使用
--initial
选项,这将强制数据节点清除其文件系统并从其他数据节点重新加载所有 NDB Cluster 数据和元数据。 这还将强制删除与这些对象关联的所有磁盘数据对象和文件。在执行重启之前,使用 ndb_mgm 客户端的
START BACKUP
命令创建备份。 升级后,使用 ndb_restore 恢复节点或节点。有关更多信息,请参见 第 25.6.8 节,“NDB Cluster 的在线备份”,以及 第 25.5.23 节,“ndb_restore — 恢复 NDB Cluster 备份”。
资源恢复。 要释放先前通过连续的 INSERT
和 DELETE
操作分配给表的内存,以便其他 NDB Cluster 表重新使用。
执行滚动重启的过程可以概括如下
停止所有集群管理节点(ndb_mgmd 进程),重新配置它们,然后重新启动它们。(请参见 使用多个管理服务器进行滚动重启。)
依次停止、重新配置,然后重新启动每个集群数据节点(ndbd 进程)。
某些节点配置参数可以通过在执行完前一个步骤后,在 ndb_mgm 客户端中对每个数据节点发出
RESTART
命令来更新。 其他参数要求数据节点完全停止,方法是使用管理客户端的STOP
命令,然后通过调用 ndbd 或 ndbmtd 可执行文件(如果适用)从系统 shell 重新启动。(在大多数 Unix 系统上,也可以使用类似 kill 的 shell 命令来停止数据节点进程,但建议使用STOP
命令,并且通常更简单。)注意在 Windows 上,您还可以使用 SC STOP 和 SC START 命令、
NET STOP
和NET START
命令,或 Windows 服务管理器来停止和启动已安装为 Windows 服务的节点(请参见 第 25.3.2.4 节,“将 NDB Cluster 进程安装为 Windows 服务”)。每个节点配置参数的文档中都指示了所需的重启类型。 请参见 第 25.4.3 节,“NDB Cluster 配置文件”。
依次停止、重新配置,然后重新启动每个集群 SQL 节点(mysqld 进程)。
NDB Cluster 支持对节点进行相当灵活的升级顺序。 在升级 NDB Cluster 时,您可以在升级管理节点、数据节点或两者之前升级 API 节点(包括 SQL 节点)。 换句话说,您可以按任何顺序升级 API 和 SQL 节点。 这受以下规定的约束
此功能旨在仅用作在线升级的一部分。 在生产环境中,不建议也不支持混合使用来自不同 NDB Cluster 版本的节点二进制文件进行持续的长期使用。
您必须在升级任何其他类型的节点之前升级相同类型的所有节点(管理节点、数据节点或 API 节点)。 这在升级节点的顺序无关紧要的情况下仍然适用。
您必须在升级任何数据节点之前升级所有管理节点。 这在升级集群的 API 和 SQL 节点的顺序无关紧要的情况下仍然适用。
在升级所有管理节点和数据节点之前,不得使用特定于 “新” 版本的功能。
这同样适用于可能适用的任何 MySQL 服务器版本更改,以及 NDB 引擎版本更改,因此在计划升级时不要忘记考虑这一点。(这对 NDB Cluster 的在线升级来说通常是正确的。)
在节点重启期间,任何 API 节点都无法执行模式操作(例如数据定义语句)。 部分由于此限制,在在线升级或降级期间也不支持模式操作。 此外,在升级或降级进行时,无法执行本机备份。
使用多个管理服务器进行滚动重启。 在执行具有多个管理节点的 NDB Cluster 的滚动重启时,请记住,ndb_mgmd 会检查是否有其他管理节点正在运行,如果有,则尝试使用该节点的配置数据。 要防止这种情况发生,并强制 ndb_mgmd 重新读取其配置文件,请执行以下步骤
在执行滚动重启以更新集群的配置时,可以使用 ndbinfo.nodes
表的 config_generation
列来跟踪哪些数据节点已成功使用新配置重启。 请参见 第 25.6.17.48 节,“ndbinfo 节点表”。