Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Performing a Rolling Restart of an NDB Cluster

25.6.5 执行 NDB 集群的滚动重启

本节讨论如何执行一个名为“滚动重启”的NDB集群安装的操作过程,这个过程涉及逐一停止和启动(或重启)每个节点,以保持整个集群的运行状态。这通常在进行“滚动升级”或“滚动降级”时执行,升级或降级时高可用性对集群至关重要,不允许集群整体的停机时间。在这里提到的升级信息,也普遍适用于降级。

进行滚动重启有多种原因,这些在接下来的几段中将会详细描述。

配置变更。 为了改变集群的配置,比如向集群添加一个SQL节点,或者设置一个配置参数为新值。

NDB 集群软件升级或降级。 为了将集群升级到更高版本的NDB集群软件(或者降级到旧版本)。这通常被称为“滚动升级”(或“滚动降级”,当回退到旧版本NDB集群时)。

节点主机上的变更。 为了在运行一个或多个NDB集群节点进程的硬件或操作系统上进行更改。

系统重置(集群重置)。 为了因为集群达到不理想状态而重置。在这种情况下,通常希望重新加载一个或多个数据节点的数据和元数据。这可以通过以下三种方式之一完成:

资源恢复。 为了释放由连续INSERTDELETE操作分配的表内存给其他NDB集群表重用。

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

  1. 首先停止所有集群管理节点(ndb_mgmd进程),然后重新配置它们,最后重启它们。(参见使用多个管理服务器进行滚动重启)。

  2. 接着,每个集群数据节点(ndbd进程)停止、重新配置,然后重启。

    某些节点配置参数可以通过对每个数据节点执行RESTART命令来更新,这种操作使用了ndb_mgm客户端。其他参数则需要完全停止数据节点,使用管理客户端的STOP命令,然后从系统shell中重新启动它,通过执行适当的ndbdndbmtd可执行文件。通常,Unix系统上也可以使用类似kill的shell命令来停止数据节点进程,但更推荐并通常更简单的是使用STOP命令。

    Note

    在Windows上,你也可以使用SC STOPSC START命令,NET STOPNET START命令,或Windows服务管理器来停止和启动已安装为Windows服务的节点(请参阅第25.3.2.4节,“安装NDB集群进程为Windows服务”)。

    所需重启类型由每个节点配置参数的文档说明。请参阅第 25.4.3 节,“NDB 集群配置文件”

  3. 停止、重新配置,然后逐个重启每个集群 SQL 节点(mysqld 进程)。

NDB 集群支持对节点进行灵活的升级顺序。当升级 NDB 集群时,您可以在升级管理节点、数据节点或两者之前先升级 API 节点(包括 SQL 节点)。换句话说,您可以在任意顺序下升级 API 和 SQL 节点。这有一些条件限制:

  • 这项功能仅适用于在线升级。在生产环境中,长期使用不同 NDB 集群版本的节点混合运行是既不推荐也不支持的。

  • 您必须在升级之前先将所有相同类型(管理、数据或 API 节点)的节点升级。这对于任何节点升级顺序都是成立的。

  • 您必须在升级集群的 API 和 SQL 节点之前先升级所有管理节点。无论您如何升级这些节点,这一点都成立。

  • ” 版本特有的功能不能在所有管理节点和数据节点都未升级前使用。

    这同样适用于可能伴随的任何 MySQL 服务器版本变更,以及 NDB 引擎版本变更,因此在规划升级时不要忘记考虑这一点。(对于在线升级 NDB 集群来说,这一点是普遍适用的。)

在节点重启期间,任何API节点都无法执行架构操作(如数据定义语句)。由于这一限制,架构操作也不能在在线升级或降级过程中进行。此外,在升级或降级进行时,无法执行原生备份。

多个管理服务器的滚动重启.  在进行多个管理节点的NDB集群滚动重启时,请注意ndb_mgmd会检查是否有其他管理节点正在运行,如果是,则尝试使用该节点的配置数据。为了避免这种情况发生,并强制ndb_mgmd重新读取其配置文件,请执行以下步骤:

  1. 停止所有NDB集群ndb_mgmd进程。

  2. 更新所有config.ini文件。

  3. 启动一个单独的ndb_mgmd使用--reload, --initial,或者根据需要使用两者。

  4. 如果您以ndb_mgmd--initial选项启动了第一个ndb_mgmd实例,您还必须使用--initial选项启动任何剩余的ndb_mgmd实例。

    无论您在启动第一个ndb_mgmd实例时使用了哪些其他选项,您都不应该在第一个实例使用--reload后启动任何剩余的ndb_mgmd实例。

  5. 完成数据节点和API节点的滚动重启操作。

在进行滚动重启以更新集群配置时,您可以使用 config_generation 列来自 ndbinfo.nodes 表来跟踪哪些数据节点已经成功重启以使用新的配置。请参阅 第 25.6.17.48 节,“The ndbinfo nodes 表”