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