linux安装mysql ndb cluster

linux安装mysql ndb cluster

1、版本说明

1.1、linux操作系统版本

linux操作系统版本:centos 6.9
文件名:CentOS-6.9-x86_64-bin-DVD1.iso
sha256sum:d27cf37a40509c17ad70f37bc743f038c1feba00476fe6b69682aa424c399ea6
下载链接: https://vault.centos.org/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso

其余版本的centos打开链接选择版本即可下载: https://vault.centos.org/

在这里插入图片描述

1.2、mysql ndb cluster版本

mysql ndb cluster版本:mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz
文件名:mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz
MD5: 7ca526fcdfca6775b3212cde2a5cdda4
下载链接: https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz

其余版本的打开链接选择版本即可下载: https://downloads.mysql.com/archives/cluster/

在这里插入图片描述

2、 MySQL ndb cluste介绍

2.1、官方文档

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-general-info.html

官方文档如下

在这里插入图片描述

2.2、NDB Cluster 组件总览

官方介绍链接
链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-overview.html

NDB集群由一组计算机组成,称为主机,每个主机运行一个或多个进程。这些进程称为节点,可能包括MySQL服务器(用于访问NDB数据)、数据节点(用于存储数据)、一个或多个管理服务器以及可能的其他专用数据访问程序。NDB集群中这些组件的关系如下所示:

在这里插入图片描述

所有这些程序一起工作,形成一个NDB集群(。当数据由NDB存储引擎存储时,表(和表数据)存储在数据节点中。这些表可以从集群中的所有其他MySQL服务器(SQL节点)直接访问。因此,在集群中存储数据的工资单应用程序中,如果一个应用程序更新了员工的工资,那么查询此数据的所有其他MySQL服务器都可以立即看到此更改。

2.3、NDB Cluster 核心概念

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-basics.html

在这里插入图片描述

2.3.1、有3种类型的node:

在许多上下文中,术语“节点”用于表示计算机,但在讨论NDB集群时,它意味着进程。可以在一台计算机上运行多个节点;对于运行一个或多个集群节点的计算机,我们使用术语集群主机。

  1. data node:数据node,存储数据库数据。
    数据节点:这种类型的节点存储集群数据。数据节点的数量与片段副本的数量相同,乘以片段的数量(请参见第2.2节“NDB集群节点、节点组、片段副本和分区”)。例如,如果有两个片段副本,每个副本有两个片段,则需要四个数据节点。一个片段副本足以用于数据存储,但不提供冗余;因此,建议使用两个(或更多)片段副本来提供冗余,从而提供高可用性。数据节点可以使用命令ndbd(请参见第5.1节“ndbd -NDB集群数据节点守护程序”)或ndbmtd启动
  2. sql node:mysql server node,操作data node 进行增删改查。
    SQL节点:这是访问集群数据的节点。对于NDB集群,SQL节点是使用NDBCLUSTER存储引擎的传统MySQL服务器。一个SQL节点是一个mysqld进程,它使用–ndbcluster和–ndb-connectstring选项启动,这两个选项在本章的其他地方有解释,可能还有其他MySQL服务器选项。
    SQL节点实际上只是一种特殊类型的API节点,它指定访问NDB集群数据的任何应用程序。API节点的另一个示例是用于恢复集群备份的ndb_restore实用程序。可以使用NDB API编写这样的应用程序。有关NDB API的基本信息,请参阅NDB API入门。
  3. management node:管理node
    这种类型的节点的作用是管理NDB集群中的其他节点,执行诸如提供配置数据、启动和停止节点以及运行备份等功能。由于此节点类型管理其他节点的配置,因此应在任何其他节点之前首先启动此类型的节点。使用命令ndb_mgmd启动管理节点。

2.3.2、事件日志(Event logs)

NDB集群按类别(启动、关闭、错误、检查点等)、优先级和严重性记录事件。所有可报告事件的完整列表可参见第6.3节“NDB集群中生成的事件报告”。事件日志分为以下两种类型:
集群日志:保留整个集群的所有所需可报告事件的记录。
节点日志:也为每个单独节点保存的单独日志。

2.3.3、检查点(Checkpoint)

一般来说,当数据保存到磁盘时,就说已经达到了检查点。更具体地说,对于NDB集群,检查点是一个时间点,所有提交的事务都存储在磁盘上。关于NDB存储引擎,有两种类型的检查点,它们一起工作以确保维护集群数据的一致视图。以下列表中显示了这些内容:
本地检查点(LCP):这是一个特定于单个节点的检查点;然而,LCP或多或少地同时发生在集群中的所有节点上。LCP通常每隔几分钟发生一次;精确的间隔会有所不同,并且取决于节点存储的数据量、集群活动的级别和其他因素。
以前,LCP涉及将节点的所有数据保存到磁盘。NDB 7.6引入了对部分LCP的支持,这可以在某些情况下显着改善恢复时间。有关详细信息,请参见第2.4.2节“NDB Cluster 7.6中的新增功能”,以及启用部分LCP并控制其使用的存储量的EnablePartialLCP和RecoveryWork配置参数的说明。
全局检查点(GCP):当所有节点的事务被同步并且重做日志被刷新到磁盘时,GCP每隔几秒发生一次。
有关本地检查点和全局检查点创建的文件和目录的详细信息,请参阅NDB集群数据节点文件系统目录。

2.3.4、数据传送器(Transporter)

我们使用术语传输器来表示数据节点之间采用的数据传输机制。MySQL NDB Cluster 7.5和7.6支持其中三个,如下所示:
以太网上的TCP/IP。请参见第4.3.10节“NDB集群TCP/IP连接”。
直接TCP/IP。使用机器到机器连接。请参见第4.3.11节“使用直接连接的NDB集群TCP/IP连接”。
虽然此传输器使用与上一项中提到的相同的TCP/IP协议,但它需要以不同的方式设置硬件,并且配置也不同。出于这个原因,它被认为是NDB集群的单独传输机制。
共享内存(SHM)。请参见第4.3.12节“NDB集群共享内存连接”。
由于NDB集群的普遍性,大多数用户都使用TCP/IP over Ethernet。
无论使用哪种传输器,NDB都试图确保数据节点进程之间的通信使用尽可能大的块来执行,因为这有利于所有类型的数据传输。

2.3.5、mysql ndb cluster 关机再开机,表数据都没有了对吗?因为表数据存在内存中

答案是:不对,表数据不会丢失。 这是一个非常常见的误解,但NDB Cluster的设计确保了数据的持久化(Persistence),而不仅仅是内存存储。

您说的“表数据存在内存中”只对了一半。下面我为您详细解释:

核心原理:数据如何被持久化?
确实,NDB Cluster的主要工作数据存储在内存中,这是为了实现极高的读写性能和低延迟。但是,它通过一套复杂的机制来保证即使断电或关机,数据也不会丢失:

日志文件(Redo Log):

所有对数据的修改(INSERT, UPDATE, DELETE)在提交之前,都会先被写入磁盘上的重做日志(Redo Log) 文件中。

这确保了任何已提交的事务都有记录可循。

检查点(Checkpoint):

后台进程会定期将内存中的数据快照(Snapshot)同步到磁盘上的数据文件(*.dat文件) 中。这个过程称为“检查点”。

检查点的作用是将内存中的数据持久化到硬盘,并清理过时的日志文件。

数据文件(Data Files):

这是最终存储在硬盘上的数据文件,是内存数据的持久化副本。

您可以这样理解: 内存(RAM)是为了提供极致的速度,而磁盘(硬盘)是为了保证数据的持久性和安全性。数据同时存在于内存和磁盘上。

关机再开机的过程是怎样的?
关键区别在于关机的方式:

场景一:正常有序关机(推荐做法)
您执行了正确的关机命令(如 ndb_mgm -e shutdown),或者按顺序停止了各个节点。

关机时:管理节点会协调所有数据节点,执行一次最后的检查点操作,将所有内存中的数据完整地、同步地刷新到磁盘数据文件中。

开机后:数据节点启动时,会加载磁盘上的数据文件,并应用自上次检查点之后的所有重做日志,从而恢复到关机前的完美状态。

结果:数据完全不会丢失。

场景二:异常断电或强制关机(有风险)
服务器突然掉电,或者直接用 kill -9 命令强制终止了数据节点进程。

关机时:数据节点被突然终止,来不及执行最后的检查点。此时,磁盘上的数据文件可能略旧于关机前的最新状态。

开机后:数据节点启动时,会进入恢复模式。它会加载磁盘上最新的数据文件,然后自动重放(Replay) 重做日志中所有已提交但尚未写入数据文件的事务。

结果:只要存储重做日志的磁盘没有损坏,NDB Cluster通常也能自动恢复所有数据,保证数据的完整性。这是它高可用性设计的一部分。

2.4、NDB集群节点、节点组、片段副本和分区

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-nodes-groups.html

本节讨论NDB集群划分和复制数据以进行存储的方式。
下面几段将讨论一些对理解这一主题至关重要的概念。
数据节点。 一个ndbd或ndbmtd进程,它存储一个或多个片段副本,即分配给节点所属的节点组的分区副本(本节稍后讨论)。
每个数据节点应位于单独的计算机上。虽然也可以在一台计算机上托管多个数据节点进程,但通常不建议使用这种配置。
在提到ndbd或ndbmtd进程时,术语“node”和“data node”通常可以互换使用;在提到的地方,管理节点(ndb_mgmd进程)和SQL节点(mysqld进程)在本讨论中被指定为这样。
节点组。 节点组由一个或多个节点组成,存储分区或片段副本集(见下一项)。
NDB集群中的节点组数量不能直接配置;它是数据节点数量和片段副本数量的函数(NoOfReplicas配置参数),如下所示:
[节点组数] = [数据节点数] / NoOfReplicas
因此,如果NoOfReplicas在Node.ini文件中设置为1,则具有4个数据节点的NDB群集具有4个节点组,如果NoOfReplicas设置为2,则具有2个节点组,如果NoOfReplicas设置为4,则具有1个节点组。片段副本将在本节后面讨论;有关NoOfReplicas的更多信息,请参见第4.3.6节“定义NDB集群数据节点”。
注意
NDB集群中的所有节点组必须具有相同数量的数据节点。
您可以向正在运行的NDB集群在线添加新节点组(从而添加新数据节点);有关详细信息,请参见第6.7节“在线添加NDB集群数据节点”。
分区 这是群集存储的数据的一部分。每个节点负责保持分配给它的任何分区的至少一个副本(即,至少一个片段副本)可用于集群。
NDB集群默认使用的分区数量取决于数据节点的数量和数据节点使用的LDM线程的数量,如下所示:
[分区数] = [数据节点数] * [LDM线程数]
使用运行ndbmtd的数据节点时,LDM线程的数量由MaxNoOfExecutionThreads的设置控制。当使用ndbd时,只有一个LDM线程,这意味着集群分区的数量与参与集群的节点的数量一样多。当使用ndbmtd并将MaxNoOfExecutionThreads设置为3或更小时也是如此。(您应该知道,LDM线程的数量会随着此参数的值而增加,但不是以严格的线性方式增加,并且设置它时存在其他约束;有关详细信息,请参阅MaxNoOfExecutionThreads的说明。)
NDB和用户定义分区。 NDB Cluster通常会自动对NDBCLUSTER表进行分区。但是,也可以使用用户定义的分区和NDBCLUSTER表。这受到以下限制:
只有KEY和LINEAR KEY分区方案在生产环境中支持NDB表。
可以为任何NDB表显式定义的分区的最大数量是8 * [LDM线程的数量] * [节点组的数量],NDB集群中的节点组的数量如本节前面所讨论的那样确定。为数据节点进程运行ndbd时,设置LDM线程数没有任何影响(因为ThreadConfig仅适用于ndbmtd);在这种情况下,可以将此值视为等于1,以便执行此计算。
有关详细信息,请参见第5.3节“ndbmtd -NDB群集数据节点守护程序(多线程)"。
有关NDB群集和用户定义分区的更多信息,请参见第2.7节“NDB群集的已知限制”和与存储引擎相关的分区限制。
碎片复制品。 这是群集分区的副本。节点组中的每个节点存储一个片段副本。有时也称为分区副本。片段副本的数量等于每个节点组的节点数量。
一个片段副本完全属于一个节点;一个节点可以(并且通常)存储多个片段副本。
下图说明了一个NDB集群,其中有四个运行ndbd的数据节点,它们被安排在两个节点组中,每个节点组有两个节点;节点1和2属于节点组0,节点3和4属于节点组1。
注意
这里只显示了数据节点;虽然一个工作的NDB集群需要一个ndb_mgmd进程来进行集群管理,并且至少需要一个SQL节点来访问集群存储的数据,但为了清晰起见,这些节点在图中被省略了。

图2.2具有两个节点组的NDB集群

在这里插入图片描述

集群存储的数据分为四个分区,编号为0、1、2和3。每个分区都存储在同一个节点组中的多个副本中。分区存储在备用节点组中,如下所示:
分区0存储在节点组0上;主片段副本(主副本)存储在节点1上,备份片段副本(分区的备份副本)存储在节点2上。
分区1存储在另一个节点组(节点组1)上;此分区的主片段副本在节点3上,其备份片段副本在节点4上。
分区2存储在节点组0上。但是,其两个片段副本的放置与分区0相反;对于分区2,主片段副本存储在节点2上,备份存储在节点1上。
分区3存储在节点组1上,并且其两个片段副本的放置与分区1的放置相反。也就是说,它的主片段副本位于节点4上,备份位于节点3上。
这对于NDB集群的持续运行意味着什么:只要参与集群的每个节点组至少有一个节点运行,集群就有所有数据的完整副本并保持可行。下图对此进行了说明。

图2.3 2x2 NDB集群所需的节点

在这里插入图片描述

在该示例中,集群由两个节点组组成,每个节点组由两个数据节点组成。每个数据节点都运行一个ndbd实例。节点组0中的至少一个节点和节点组1中的至少一个节点的任意组合足以使集群保持“活动”。然而,如果来自单个节点组的两个节点都失败,则由另一节点组中的剩余两个节点组成的组合是不够的。在这种情况下,集群已经丢失了整个分区,因此无法再提供对所有NDB集群数据的完整集合的访问。
在NDB 7.5.4及更高版本中,单个NDB集群实例支持的最大节点组数为48(错误#80845,错误#22996305)。

2.5、NDB集群硬件、软件和网络要求

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-overview-requirements.html

NDB集群的优势之一是它可以在商品硬件上运行,并且在这方面没有不寻常的要求,除了大量的RAM,因为所有实时数据存储都在内存中完成。(It可以使用磁盘数据表来降低此要求-有关这些表的详细信息,请参见第6.11节“NDB群集磁盘数据表”。)当然,多个更快的CPU可以提高性能。其他NDB集群进程的内存需求相对较小。
NDB集群的软件要求也很低。主机操作系统不需要任何不寻常的模块,服务,应用程序或配置来支持NDB集群。对于支持的操作系统,标准安装应该足够了。MySQL软件要求很简单:所需的只是NDB Cluster的生产版本。仅仅为了能够使用NDB集群,并不一定要自己编译MySQL。我们假设您正在使用适合您平台的二进制文件,可从NDB集群软件下载页面https://dev.mysql.com/downloads/cluster/获得。

对于节点之间的通信,NDB集群支持任何标准拓扑中的TCP/IP网络,并且每个主机的最低期望是标准的100 Mbps以太网卡,加上交换机,集线器或路由器,以提供整个集群的网络连接。我们强烈建议NDB集群在其自己的子网中运行,该子网不与不构成集群一部分的机器共享,原因如下:
安全
NDB集群节点之间的通信不会以任何方式加密或屏蔽。保护NDB集群内传输的唯一方法是在受保护的网络上运行NDB集群。如果您打算将NDB Cluster用于Web应用程序,则群集应位于防火墙之后,而不是位于网络的非军事区(DMZ)或其他地方。
有关详细信息,请参见第6.18.1节“NDB群集安全和网络问题”。
效率
在专用或受保护的网络上设置NDB群集,使群集能够独占使用群集主机之间的带宽。为NDB群集使用单独的交换机不仅有助于防止对NDB群集数据的未经授权的访问,还可以确保NDB群集节点免受网络上其他计算机之间传输所造成的干扰。为了增强可靠性,您可以使用双交换机和双卡来消除网络作为单点故障;许多设备驱动程序支持此类通信链路的故障转移。

网络通信和延迟。
NDB集群需要数据节点和API节点(包括SQL节点)之间,以及数据节点和其他数据节点之间的通信,以执行查询和更新。这些进程之间的通信延迟会直接影响用户查询的性能和延迟。此外,为了在节点静默故障的情况下保持一致性和服务,NDB集群使用心跳和超时机制,将来自节点的长时间通信丢失视为节点故障。这可以导致减少冗余。回想一下,为了保持数据一致性,当节点组中的最后一个节点发生故障时,NDB集群将关闭。因此,为了避免增加强制关闭的风险,应尽可能避免节点之间的通信中断。

数据或API节点的故障会导致涉及故障节点的所有未提交事务的中止。数据节点恢复需要从幸存的数据节点同步故障节点的数据,并在数据节点恢复服务之前重新建立基于磁盘的重做和检查点日志。此恢复可能需要一段时间,在此期间,群集以减少的冗余运行。
心跳依赖于所有节点及时生成心跳信号。如果节点过载,由于与其他程序共享而导致机器CPU不足,或者由于交换而导致延迟,则这可能是不可能的。如果心跳生成被充分延迟,则其他节点将响应缓慢的节点视为失败。

在某些情况下,这种将慢速节点视为故障节点的做法可能是可取的,也可能是不可取的,这取决于节点的慢速操作对集群其余部分的影响。在为NDB Cluster设置HeartbeatIntervalDbDb和HeartbeatIntervalDbApi等超时值时,必须注意实现快速检测、故障转移和恢复服务,同时避免潜在的代价高昂的误报。

如果数据节点之间的通信延迟预期高于LAN环境中的预期(大约100 µs),则必须增加超时参数,以确保任何允许的延迟时间段都在配置的超时范围内。以这种方式增加超时会对最坏情况下检测故障的时间产生相应的影响,从而对服务恢复的时间产生影响。
LAN环境通常可以配置为具有稳定的低延迟,并且使得它们可以提供具有快速故障转移的冗余。单个链路故障可以在TCP级别(NDB集群通常运行的位置)以最小和受控的延迟恢复。WAN环境可以提供一系列延迟,以及具有较慢故障转移时间的冗余。个别链路故障可能需要在端到端连接恢复之前传播路由更改。在TCP级别,这可以在各个通道上显示为大延迟。在这些场景中观察到的最坏情况下的TCP延迟与IP层绕过故障重新路由的最坏情况下的时间有关。

2.6、MySQL NDB集群7.5、7.6中的新增功能

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-what-is-new.html

以下部分描述了与早期版本系列相比,NDB Cluster 7.6至5.7.44-ndb-7.6.36和NDB Cluster 7.5至5.7.44-ndb-7.5.36中MySQL NDB Cluster实现的更改。NDB Cluster 8.0从NDB 8.0.19开始作为正式可用性(GA)版本提供;请参阅MySQL NDB Cluster 8.0中的新增功能,以了解有关NDB 8.0中的新功能和其他更改的更多信息。NDB Cluster 7.6和7.5是生产环境中仍然支持的早期GA版本;有关NDB Cluster 7.6的信息,请参见第2.4.2节“NDB Cluster 7.6中的新增功能”。有关NDB Cluster 7.5的信息,请参见第2.4.1节“NDB Cluster 7.5中的新增功能”。NDB Cluster 7.4和7.3是以前的GA版本,已经达到其生命周期的终点,不再支持或维护。我们建议新的生产部署使用MySQL NDB Cluster 8.0。

2.6.1、NDB Cluster 7.5中的新功能

链接: http://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-what-is-new-7-5.html

NDB Cluster 7.5中的主要变化和新功能可能会引起人们的兴趣,如下所示:
ndbinfo增强功能。 在ndbinfo数据库中进行了一些更改,主要是它现在提供了有关NDB集群节点配置参数的详细信息。

config_params表已变为只读,并已通过提供有关每个配置参数的信息的附加列进行了增强,这些信息包括参数的类型、默认值、最大值和最小值(如果适用)、参数的简要说明以及是否需要该参数。此表还为每个参数提供唯一的param_number。

config_values表中的一行显示具有指定ID的节点上给定参数的当前值。该参数由config_param列的值标识,该列映射到config_params表的param_number。
使用此关系,您可以在这两个表上编写一个联接,以按名称获取一个或多个NDB集群配置参数的默认值、最大值、最小值和当前值。使用这种连接的SQL语句示例如下所示:

SELECT  p.param_name AS Name,
        v.node_id AS Node,
        p.param_type AS Type,
        p.param_default AS 'Default',
        p.param_min AS Minimum,
        p.param_max AS Maximum,
        CASE p.param_mandatory WHEN 1 THEN 'Y' ELSE 'N' END AS 'Required',
        v.config_value AS Current
FROM    config_params p
JOIN    config_values v
ON      p.param_number = v.config_param
WHERE   p. param_name IN ('NodeId', 'HostName','DataMemory', 'IndexMemory');

有关这些更改的详细信息,请参见第6.15.8节“ndbinfo config_params表”。有关更多信息和示例,请参见第6.15.9节“ndbinfo config_values表”。
此外,ndbinfo数据库不再依赖于MyISAM存储引擎。所有ndbinfo表和视图现在都使用NDB(显示为NDBINFO)。

NDB 7.5.4中引入了几个新的ndbinfo表。以下列出了这些表格,并附有简要说明:
dict_obj_info提供NDB中数据库对象的名称和类型,以及有关父对象的信息(如果适用)

table_distribution_status提供NDB表分发状态信息

table_fragments提供有关NDB表片段分布的信息

table_info提供了有关日志记录、检查点设置、存储以及对每个NDB表有效的其他选项的信息

table_replicas提供有关片段副本的信息

有关详细信息,请参阅各个表的说明。

默认行和列格式更改。
从NDB 7.5.1开始,CREATE TABLE的ROW_FORMAT选项和COLUMN_FORMAT选项的默认值都可以设置为DYNAMIC而不是FIXED,使用新的MySQL服务器变量ndb_default_column_format作为此更改的一部分添加;设置为固定或动态(或者用等价的选项–ndb-default-column-format=FIXED启动mysqld)强制将这个值用于COLUMN_FORMAT和ROW_FORMAT。在NDB 7.5.4之前,此变量的默认值是DYNAMIC;在此版本和更高版本中,默认值是FIXED,它提供了与以前版本的向后兼容性(Bug #24487363)。
现有表列使用的行格式和列格式不受此更改的影响。添加到这些表中的新列使用这些列的新默认值(可能被ndb_default_column_format覆盖),并且现有列也被更改为使用这些列,前提是执行此操作的ALTER TABLE语句指定ALGORITHM=COPY。
注意
如果mysqld使用–ndb-allow-copying-alter-table= null运行,则无法隐式地复制ALTER TABLE。

ndb_binlog_index不再依赖于MyISAM。 从NDB 7.5.2开始,NDB集群复制中使用的ndb_binlog_index表现在使用InnoDB存储引擎而不是MyISAM。升级时,你可以用–force --mysql_upgrade–system-tables来运行mysql_upgrade,使其执行ALTER TABLE. ENGINE=INNODB在此表上。为了向后兼容,仍然支持对该表使用MyISAM。
此更改的一个好处是,可以依赖于此表的事务行为和无锁读取,这有助于缓解清除操作和日志循环期间的并发问题,并提高此表的可用性。

ALTER TABLE更改。 NDB Cluster以前支持在线ALTER TABLE的替代语法。NDB Cluster 7.5中不再支持此操作,因为它只使用ALGORITHM = DEFAULT|副本|INPLACE用于表表10,与标准MySQL Server中一样。
影响此语句使用的另一个更改是ALTER TABLE. ALGORITHM=INPLACE RENAME现在除了重命名之外还可以包含重命名操作。
不推荐使用ExecuteOnComputer参数。 管理节点、数据节点和API节点的ExecuteOnComputer配置参数已被弃用,并且在NDB Cluster的未来版本中将被删除。您应该对所有三种类型的节点使用等效的HostName参数。

记录每键优化。 NDB处理程序现在使用records-per-key接口来实现MySQL 5.7.5中优化器的索引统计信息。这一变化带来的一些好处如下所列:
在许多情况下,如果以前选择的连接索引或表连接顺序不是最佳的,那么优化器现在可以选择更好的执行计划
EXPLAIN显示的行估计值更准确
改进了由SHOW INDEX给出的基数估计
连接池节点ID。 NDB 7.5.0添加了mysqld --ndb-cluster-connection-pool-nodeids选项,该选项允许为连接池设置一组节点ID。此设置将覆盖–ndb-nodeid,这意味着它还将覆盖–ndb-connectstring选项和NDB_CONNECTSTRING环境变量。
注意
您可以使用mysqld的–ndb-cluster-connection-pool选项设置连接池的大小。

create_old_temporals已删除。 create_old_temporals系统变量在NDB Cluster 7.4中不推荐使用,现在已被删除。

ndb_mgm客户端PROMPT命令。 NDB Cluster 7.5添加了一个新的命令来设置客户端的命令行提示符。以下示例说明了PROMPT命令的用法:

ndb_mgm> PROMPT mgm#1:
mgm#1: SHOW
Cluster Configuration
---------------------
[ndbd(NDB)]     4 node(s)
id=5    @10.100.1.1  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 0, *)
id=6    @10.100.1.3  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 0)
id=7    @10.100.1.9  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 1)
id=8    @10.100.1.11  (mysql-5.7.44-ndb-7.5.36, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)
id=50   @10.100.1.8  (mysql-5.7.44-ndb-7.5.36)

[mysqld(API)]   2 node(s)
id=100  @10.100.1.8  (5.7.44-ndb-7.5.36)
id=101  @10.100.1.10  (5.7.44-ndb-7.5.36)

mgm#1: PROMPT
ndb_mgm> EXIT
jon@valhaj:/usr/local/mysql/bin>

更多内容参见本节开头的官方文档

2.6.2、NDB Cluster 7.6中的新功能

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-what-is-new-7-6.html

2.7、NDB 7.5、7.6:已添加、已弃用和已删除的选项、变量和参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-added-deprecated-removed.html

2.8、使用InnoDB的MySQL服务器与NDB集群的比较

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-compared.html

MySQL Server在存储引擎中提供了许多选择。由于NDB和InnoDB都可以作为事务性MySQL存储引擎,MySQL Server的用户有时会对NDB集群感兴趣。他们将NDB视为MySQL 5.7中默认InnoDB存储引擎的可能替代或升级。虽然NDB和InnoDB具有共同的特征,但在架构和实现上存在差异,因此一些现有的MySQL Server应用程序和使用场景可以很好地适合NDB集群,但不是所有的。

在本节中,我们将讨论并比较NDB 7.5使用的NDB存储引擎与MySQL 5.7中使用的InnoDB的一些特性。接下来的几节提供了一个技术比较。在许多情况下,关于何时何地使用NDB Cluster的决定必须根据具体情况进行,并考虑所有因素。虽然为每个可能的使用场景提供细节超出了本文档的范围,但我们也试图提供一些关于NDB与InnoDB后端的一些常见应用程序类型的相对适用性的非常一般的指导。

NDB Cluster 7.5使用基于MySQL 5.7的mysqld,包括对InnoDB 1.1的支持。虽然可以将InnoDB表与NDB集群一起使用,但这些表不会被集群化。也不可能将NDB Cluster 7.5发行版中的程序或库与MySQL Server 5.7一起使用,反之亦然。

虽然某些类型的常见业务应用程序可以在NDB集群或MySQL服务器上运行(最有可能使用InnoDB存储引擎),但存在一些重要的架构和实现差异。第2.6.1节“NDB和InnoDB存储引擎之间的差异”提供了这些差异的摘要。由于这些差异,某些使用场景显然更适合一个引擎或另一个引擎;请参见第2.6.2节“NDB和InnoDB工作负载”。这反过来又影响了更适合与NDB或InnoDB一起使用的应用程序类型。请参见第2.6.3节“NDB和InnoDB功能使用摘要”,以比较两者在常见类型的数据库应用程序中的相对适用性。

有关NDB和MEMORY存储引擎的相对特征的信息,请参阅何时使用MEMORY或NDB群集。

有关MySQL存储引擎的其他信息,请参阅替代存储引擎。

2.8.1、NDB和InnoDB存储引擎的区别

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndb-innodb-engines.html
NDB存储引擎是使用分布式、无共享架构实现的,这使得它在许多方面与InnoDB的行为不同。对于那些不习惯使用NDB的人来说,由于它在事务、外键、表限制和其他特性方面的分布式特性,可能会出现意外的行为。下表显示了这些情况:

在这里插入图片描述

2.8.2、NDB和InnoDB工作负载

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndb-innodb-workloads.html

NDB集群具有一系列独特的属性,使其非常适合服务于需要高可用性,快速故障转移,高吞吐量和低延迟的应用程序。由于其分布式架构和多节点实现,NDB集群也有特定的限制,可能会使某些工作负载无法正常运行。下表显示了NDB和InnoDB存储引擎在一些常见类型的数据库驱动应用程序工作负载方面的行为差异:

在这里插入图片描述

2.8.3、NDB和InnoDB功能使用总结

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndb-innodb-usage.html

当将应用程序功能需求与InnoDB和NDB的功能进行比较时,有些显然与一个存储引擎比另一个更兼容。

下表根据每个功能通常更适合的存储引擎列出了支持的应用程序功能。

在这里插入图片描述

2.9、NDB集群的已知限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations.html

在接下来的部分中,我们将讨论NDB集群当前版本中的已知限制,并与使用MyISAM和InnoDB存储引擎时可用的功能进行比较。如果您在http://bugs.mysql.com上的MySQL错误数据库中检查“Cluster”类别,您可以在http://bugs.mysql.com上的MySQL错误数据库中的“MySQL Server:“下的以下类别中找到已知错误,我们打算在NDB Cluster的即将发布的版本中更正这些错误:

NDB Cluster

群集直接API(NDB API)

集群磁盘数据

集群复制

CherterJ

此信息旨在针对刚刚阐述的条件进行完整说明。您可以使用How to Report Bugs or Problems中给出的说明向MySQL bugs数据库报告您遇到的任何差异。我们不打算在NDB Cluster 7.5中修复的任何问题都将添加到列表中。

有关已在NDB Cluster 7.5中解决的早期版本中的问题的列表,请参阅NDB Cluster 8.0中解决的以前的NDB Cluster问题。

注意
第7.3节“NDB群集复制中的已知问题”中描述了特定于NDB群集复制的限制和其他问题。

2.9.1 NDB集群中不兼容SQL 语法的部分

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-syntax.html

2.9.2 NDB集群与标准MySQL限制的限制和区别

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-limits.html

2.9.3 与NDB集群中的事务处理相关的限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-transactions.html

2.9.4 NDB集群错误处理

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-error-handling.html

2.9.5 NDB集群中与数据库对象相关的限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-database-objects.html

2.9.6 NDB集群中不支持或缺少的功能

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-unsupported.html

2.9.7与NDB集群中的性能相关的限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-performance.html

2.9.8 NDB集群独有的问题

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-exclusive-to-cluster.html

2.9.9与NDB集群磁盘数据存储相关的限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-disk-data.html

磁盘数据对象的最大值和最小值。 磁盘数据对象受以下最大值和最小值的限制:
最大表空间数:2的32次方(4294967296)

个表空间的最大数据文件数:2的16次方(65536)

最小和最大可能的范围为32 K和2G的数据文件。有关更多信息,请参见CREATETABLESPACE语句。

此外,在使用NDB磁盘数据表时,您应该注意以下有关数据文件和区段的问题:

数据文件使用DataMemory。用法与内存中数据相同。

数据文件使用文件描述符。重要的是要记住,数据文件总是打开的,这意味着文件描述符总是在使用中,不能重新用于其他系统任务。

区需要足够的PageBufferMemory;您必须为该参数保留足够的内存,以说明所有区使用的所有内存(区数乘以区大小)。

磁盘数据表和无盘模式。 在无盘模式下运行群集时,不支持使用磁盘数据表。

2.9.10与多个NDB集群节点相关的限制

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-limitations-multiple-nodes.html

3、安装MySQL ndb cluster

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html

在这里插入图片描述

本节描述了规划、安装、配置和运行NDB集群的基础知识。虽然第4章NDB集群配置中的示例提供了有关各种集群选项和配置的更深入信息,但遵循此处概述的指导方针和过程的结果应该是一个可用的NDB集群,它满足数据可用性和保护的最低要求。

有关在发行版本之间升级或降级NDB群集的信息,请参见第3.7节“升级和降级NDB群集”。

本节涵盖硬件和软件要求;网络问题; NDB集群的安装;基本配置问题;启动、停止和重新启动集群;加载示例数据库;以及执行查询。

假设。 以下各节对群集的物理和网络配置进行了一些假设。下面几段将讨论这些假设。

群集节点和主机计算机。 群集由四个节点组成,每个节点位于单独的主机上,每个节点在典型的以太网网络上都有固定的网络地址,如下所示:

Table 3.1 Network addresses of nodes in example cluster

在这里插入图片描述

此设置也显示在下图中:

图3.1 NDB群集多计算机设置
标准的部署是在每个独立的计算机上仅仅部署一种类型的节点(sql node,数据node,管理node 三选一) 如下图所示
在这里插入图片描述

网络寻址。 为了简单(和可靠性),本指南只使用数字IP地址。但是,如果您的网络上提供DNS解析,则可以在配置群集时使用主机名代替IP地址。或者,您可以使用主机文件(对于Linux和其他类似Unix的操作系统,通常为/etc/hosts,Windows上的C:\WINDOWS\system32\drivers\etc\hosts,或您的操作系统的等效文件)来提供执行主机查找的方法(如果可用)。

潜在的主机文件问题。(只有在使用域名寻址才会出现,使用IP地址时不存在此问题) 尝试为集群节点使用主机名时会出现一个常见问题,因为某些操作系统(包括某些Linux发行版)在安装期间在/etc/hosts中设置系统自己的主机名的方式。考虑两台主机名分别为ndb 1和ndb 2的机器,它们都位于群集网络域中。Red Hat Linux(包括一些衍生版本,如CentOS和Fedora)在这些机器的/etc/hosts文件中放置以下条目:

#  ndb1 /etc/hosts:
127.0.0.1   ndb1.cluster ndb1 localhost.localdomain localhost
#  ndb2 /etc/hosts:
127.0.0.1   ndb2.cluster ndb2 localhost.localdomain localhost

SUSE Linux(包括OpenSUSE)将这些条目放置在计算机的/etc/hosts文件中:

#  ndb1 /etc/hosts:
127.0.0.1       localhost
127.0.0.2       ndb1.cluster ndb1
#  ndb2 /etc/hosts:
127.0.0.1       localhost
127.0.0.2       ndb2.cluster ndb2

在这两种情况下,ndb1将ndb1.cluster路由到一个DNS IP地址,但从DNS获取一个公共IP地址用于ndb2.cluster,而ndb2将ndb2.cluster路由到一个DNS地址,并获取一个公共地址用于ndb1.cluster。结果是,每个数据节点都连接到管理服务器,但无法告知任何其他数据节点何时连接,因此数据节点在启动时似乎挂起。

注意
您不能在con.ini中混合使用localhost和其他主机名或IP地址。由于这些原因,在这种情况下的解决方案(除了对所有的Roll.ini HostName条目使用IP地址)是从/etc/hosts中删除完全限定的主机名,并在Roll.ini中对所有群集主机使用这些主机名。

主机类型。 在我们的安装方案中,每台主机都是基于Intel的台式PC,运行一个以标准配置安装到磁盘的受支持操作系统,并且不运行任何不必要的服务。具有标准TCP/IP网络功能的核心操作系统应该足够了。同样为了简单起见,我们还假设所有主机上的文件系统都设置相同。如果它们不是,您应该相应地调整这些说明。

网络硬件。 每台机器上都安装了标准的100 Mbps或1千兆以太网卡,沿着了网卡的适当驱动程序,并且所有四台主机都通过标准以太网网络设备(如交换机)连接。(All机器应该使用具有相同吞吐量的网卡。也就是说,群集中的所有四台计算机都应具有100 Mbps卡,或者所有四台计算机都应具有1 Gbps卡。)NDB集群工作在100 Mbps的网络中;然而,千兆以太网提供了更好的性能。

重要
NDB Cluster不适用于吞吐量低于100 Mbps或延迟较高的网络。由于这个原因(以及其他原因),尝试在广域网(如Internet)上运行NDB集群不太可能成功,并且在生产中不受支持。

样本数据。 我们使用可从MySQL网站下载的世界数据库(见https://dev.mysql.com/doc/index-other.html)。我们假设每台机器都有足够的内存来运行操作系统、所需的NDB集群进程以及(在数据节点上)存储数据库。

3.1、在Linux上的安装MySQL NDB cluster

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux.html

有以下四种方式在Linux上的安装MySQL NDB cluster
在Linux上安装NDB群集二进制版本。
从RPM安装NDB群集。
使用.deb文件安装NDB集群。
在Linux上从源代码构建NDB集群。

本节介绍NDB Cluster在Linux和其他类Unix操作系统上的安装方法。虽然接下来的几节涉及到Linux操作系统,但其中给出的说明和过程应该可以很容易地适用于其他受支持的类Unix平台。有关特定于Windows系统的手动安装和设置说明,请参见第3.2节“在Windows上安装NDB群集”。

每个NDB群集主机计算机必须安装正确的可执行程序。运行SQL节点的主机必须安装MySQL Server二进制文件(mysqld)。管理节点需要管理服务器守护程序(ndb_mgmd);数据节点需要数据节点守护程序(ndbd或ndbmtd)。无需在管理节点主机和数据节点主机上安装MySQL Server二进制文件。建议您还在管理服务器主机上安装管理客户端(ndb_mgm)。

在Linux上安装NDB集群可以使用Oracle中的预编译二进制文件(作为. tar.gz存档文件下载)、RPM包(也可从Oracle获得)或源代码完成。所有这三种安装方法都将在下面的部分中介绍。

无论使用哪种方法,在安装NDB集群二进制文件之后,仍然需要为所有集群节点创建配置文件,然后才能启动集群。请参见第3.3节“NDB群集的初始配置”。

3.2、本篇博文在Linux上安装NDB群集二进制版本,具体如下

本文章中节点分配情况:
三台centos 6.9 服务器 192.168.2.183、192.168.2.184、192.168.2.185。在每台服务器上都安装全部3种类型的节点。

服务器角色
192.168.2.183sql node、数据node、管理node
192.168.2.184sql node、数据node、管理node
192.168.2.185sql node、数据node、管理node

链接: Installing an NDB Cluster Binary Release on Linux

本节介绍从Oracle提供的预编译二进制文件中为每种类型的群集节点安装正确的可执行文件所需的步骤。
要使用预编译的二进制文件设置集群,每个集群主机安装过程的第一步是从NDB集群下载页面下载二进制文件存档。(本文中用的是mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz)我们假设您已经将此文件放在每台计算机的/var/tmp目录中。

安装完成后,不要启动任何二进制文件。我们将在配置节点之后向您展示如何执行此操作(请参见第21.3.3节“NDB群集的初始配置”)。

3.2.1、SQL nodes 安装

在指定为SQL节点的每台计算机上,以系统root用户身份执行以下步骤

创建一个mysql用户组,创建一个mysql用户并划分到mysql用户组中

3.2.1.1、创建mysql用户和mysql用户组

【此为直接执行的命令,后续有命令解释。】

groupadd mysql
useradd -g mysql -s /bin/false mysql

useradd和groupadd的语法在不同版本的Unix上可能略有不同,或者它们可能有不同的名称,例如adduser和addgroup。

进入到包含mysql cluster安装包的目录,解压缩归档文件,并创建一个名为mysql的指向mysql目录的符号链接。
假设mysql cluster安装包在/tmp目录下

命令解释 注释版本

# 添加一个用户组,组名为mysql
groupadd mysql
# 添加一个用户,名为mysql,并指定mysql用户属于mysql用户组,并且mysql用户无法登录系统,作为服务账户。(因为指定了mysql用户的shell 是/bin/false)
useradd -g mysql -s /bin/false mysql
3.2.1.2、安装sql node

【此为直接执行的命令,后续有命令解释。】

cd /var/tmp
tar -xzvf mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/ /usr/local/mysql

命令解释 注释版本

# 进入含有安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz的目录
cd /var/tmp
# 解压安装包到/usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64 目录下
tar -xzvf mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
# 为/usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64目录做软链接
ln -s /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/ /usr/local/mysql
3.2.1.3、初始化sql node

进入到/usr/local/mysql目录,并使用mysqld --initialize初始化系统数据库,如下所示
初始化参考链接: http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html

安装sql node后,必须初始化data目录,包括mysql系统数据库中的表:
对于某些MySQL安装方法,数据目录初始化是自动的。
对于其他安装方法,必须手动初始化数据目录。这些包括在Unix和类Unix系统上从通用二进制和源代码发行版安装,以及在Windows上从ZIP Archive包安装。

本文是使用在Linux系统上从通用二进发行版安装的,因此需要手动初始化数据库。

其中192.168.2.183,192.168.2.184,192.168.2.185是你自己的mysql ndb cluster集群服务器IP地址。【此为直接执行的命令,后续有命令解释。】

cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod -R 750 mysql-files

cp /etc/my.cnf /etc/my.cnf.bak
echo -e "[client]\nsocket=/usr/local/mysql/data/mysql.sock\n\n[mysqld]\ndatadir=/usr/local/mysql/data\nsocket=/usr/local/mysql/data/mysql.sock\nsql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\nmax_connections=100000\n# Options for mysqld process,run NDB storage engine\nndbcluster\n\n[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/lib/mysql/mysqld.pid\n\n[mysql_cluster]\n# Options for NDB Cluster processes,location of management server\nndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185"  > /etc/my.cnf

chown mysql:mysql /etc/my.cnf

mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/data

touch /var/log/mysqld.log
chown  mysql:mysql /var/log/mysqld.log
chmod 777 /var/log/mysqld.log

mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
  
bin/mysql_ssl_rsa_setup

其中执行bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql 会打印出Mysql的默认密码
最后一句:A temporary password is generated for root@localhost: ?aktQk0=RAa4

[root@centos mysql]# bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
2025-09-10T10:20:49.696464Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-09-10T10:20:50.260557Z 0 [Warning] InnoDB: New log files created, LSN=45790
2025-09-10T10:20:50.312955Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2025-09-10T10:20:50.326106Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d302af51-8e2f-11f0-9f24-000c29b999f6.
2025-09-10T10:20:50.327060Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2025-09-10T10:20:50.693790Z 0 [Warning] CA certificate ca.pem is self signed.
2025-09-10T10:20:50.770132Z 1 [Note] A temporary password is generated for root@localhost: ?aktQk0=RAa4
[root@centos mysql]# 

请记住,必须在SQL节点所在的每台计算机上重复上述步骤。

命令解释 注释版本

# 进入安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz解压后的目录/usr/local/mysql
cd /usr/local/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod -R 750 mysql-files

# 备份原mysql sql节点配置文件(默认的sql 节点配置文件)
cp /etc/my.cnf /etc/my.cnf.bak
# 建立数据库配置文件,内容如下。其中ndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185 指定的是所有管理节点的地址。
echo -e "[client]\nsocket=/usr/local/mysql/data/mysql.sock\n\n[mysqld]\ndatadir=/usr/local/mysql/data\nsocket=/usr/local/mysql/data/mysql.sock\nsql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\nmax_connections=100000\n# Options for mysqld process,run NDB storage engine\nndbcluster\n\n[mysqld_safe]\nlog-error=/var/log/mysqld.log\npid-file=/var/lib/mysql/mysqld.pid\n\n[mysql_cluster]\n# Options for NDB Cluster processes,location of management server\nndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185"  > /etc/my.cnf

chown mysql:mysql /etc/my.cnf

mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/data

touch /var/log/mysqld.log
chown  mysql:mysql /var/log/mysqld.log
chmod 777 /var/log/mysqld.log

mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
  
bin/mysql_ssl_rsa_setup

3.2.2、Data nodes 安装

**安装数据节点不需要mysqld二进制文件。仅需要NDB群集数据节点可执行文件ndbd(单线程)或ndbmtd(多线程)。**这些二进制文件也可以在安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz中找到。同样,我们假设您已将安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz放置在/var/tmp中。

以系统root身份(即,在使用sudo、su root或系统的等效权限临时获得系统管理员帐户的权限后),执行以下步骤在数据节点主机上安装数据节点程序:

cd /var/tmp
tar -xzvf mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz
cd mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64
cp bin/ndbd /usr/local/bin/ndbd
cp bin/ndbmtd /usr/local/bin/ndbmtd

在将ndb_mgm和ndb_mgmd复制到可执行文件目录后,您可以安全地从/var/tmp中删除通过解压缩mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz创建的目录及其包含的文件。

rm -rf /var/tmp/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64

将位置更改为您将文件复制到的目录,然后使它们都可执行

cd /usr/local/bin
chmod +x ndbd ndbmtd

应在每个数据节点主机上重复上述步骤。

虽然运行NDB集群数据节点只需要一个数据节点可执行文件(ndbd 或 ndbmtd),但我们已经在上面的说明中向您展示了如何安装ndbd和ndbmtd。我们建议您在安装或升级NDB Cluster时执行此操作,即使您计划仅使用其中一个,因为这可以节省时间和麻烦,以防您后来决定从一个更改为另一个。

每台托管数据节点的机器上的数据目录是/usr/local/mysql/data。在配置管理节点时,这条信息是必不可少的。

3.2.3、 Management nodes 安装

管理节点的安装不需要mysqld二进制文件。只需要NDB集群管理服务器(ndb_mgmd);您很可能还希望安装管理客户端(ndb_mgm)。这两个二进制文件也可以在安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz中找到。同样,我们假设您已将此归档文件放置在/var/tmp中。

以系统根用户root身份,执行以下步骤在管理节点主机上安装ndb_mgmd和ndb_mgm:

将位置更改为/var/tmp目录,并将安装包mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz,然后讲解压缩的ndb_mgm和ndb_mgmd复制到到合适的目录(如/usr/local/bin)中

cd /var/tmp
tar -zxvf mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz
cd mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64
cp bin/ndb_mgm bin/ndb_mgmd /usr/local/bin

在将ndb_mgm和ndb_mgmd复制到可执行文件目录后,您可以安全地从/var/tmp中删除通过解压缩mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz创建的目录及其包含的文件。

rm -rf /var/tmp/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64

将位置更改为您将文件复制到的目录,然后使它们都可执行

cd /usr/local/bin
chmod +x ndb_mgm ndb_mgmd

在第3.3节“NDB集群的初始配置”中,我们为示例NDB集群中的所有节点创建配置文件。

3.3、NDB集群的初始化配置

官方参考文档链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-configuration.html

在本节中,我们将讨论通过创建和编辑配置文件来手动配置已安装的NDB集群。

每个数据节点或SQL节点都需要一个my.cnf文件,该文件提供两条信息:一个连接字符串,告诉节点在哪里找到管理节点,以及一行,告诉此主机(托管数据节点的计算机)上的MySQL服务器启用NDBCLUSTER存储引擎。

管理节点需要一个config.ini文件,告诉它要维护多少个片段副本,为每个数据节点上的数据和索引分配多少内存,在哪里找到数据节点,在每个数据节点上的磁盘上保存数据,以及在哪里找到任何SQL节点。

3.3.1、配置数据节点和SQL节点

数据节点所需的my.cnf文件相当简单。配置文件应该位于/etc目录中,并且可以使用任何文本编辑器进行编辑。(如果文件不存在,则创建该文件。)

vi /etc/my.cnf

对于我们示例设置中的每个数据节点和SQL节点,my.cnf应该如下所示
其中其中ndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185 指定的是所有管理节点的地址。是你自己的mysql ndb cluster所有管理节点的地址。
ndbcluster 这个配置项指定sql节点以NDB storage engine的模式运行。

[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=100000
# Options for mysqld process,run NDB storage engine
ndbcluster

[mysqld_safe]
log-error=/var/lo/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid

[mysql_cluster]
# Options for NDB Cluster processes,location of management server
ndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185
[root@centos mysql]# 

一旦你在my.cnf文件的[mysqld]和[mysql_cluster]部分中使用ndbcluster和ndb-connectstring参数启动了mysqld进程,你就不能在没有实际启动集群(至少启动集群1个管理节点,1个数据节点,1个sql节点)的情况下执行任何CREATE TABLE 或 ALTER TABLE语句。否则,这些语句将失败并返回错误。这是mysql ndb cluster设计机制决定的。

3.3.2、配置管理节点

配置管理节点的第一步是创建可以在其中找到配置文件的目录,然后创建文件本身。例如(以root身份运行):

mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini

对于我们的代表性设置,/var/lib/mysql-cluster/config.ini 文件应如下所示
其中配置项解释如下:
1、[ndbd default]节是对数据节点的配置
NoOfReplicas=3 指定数据节点数量,本例指定了3个数据节点,意思就是有3个数据副本。
DataMemory=4000M 指定给每台数据节点分配多少物理内存用于存储数据,本例指定了4000M。
IndexMemory=512M 指定给每台数据节点分配多少物理内存用于存储index数据【数据索引】,本例指定了512M。

2、[ndb_mgmd] 是对特定的管理节点的配置。1个[ndb_mgmd]指定1个管理节点,有几个管理节点就有几个[ndb_mgmd]。
HostName=192.168.2.183 指定特定管理节点的IP地址,本例中是192.168.2.183
DataDir=/var/lib/mysql-cluster 指定特定管理节点的数据目录,本例中是/var/lib/mysql-cluster(默认的数据目录,可以自定义)
此目录下有MySQL ndb cluster集群的配置文件config.ini,还有数据节点的日志文件和pid文件。

在这里插入图片描述

3、[ndbd] 是对特定的数据节点的配置。1个[ndbd]指定1个数据节点,有几个数据节点就有几个[ndbd]。
HostName=192.168.2.183 指定特定数据节点的IP地址,本例中是192.168.2.183
NodeId=11 指定特定数据节点的节点ID,本例中是11
DataDir=/usr/local/mysql/data 指定特定数据节点的数据存储目录,本例中是/usr/local/mysql/data。

4、[mysqld] 是对特定的sql节点的配置。1个[mysqld]指定1个sql节点,有几个sql节点就有几个[mysqld],另外要为每个sqld节点主机预留3个sqld节点,所以每个sql节点主机上的[mysqld]数量是4个,见下面配置文件。【预留sqld几点很重要,这些预留的sqld节点是为了ndb_restore等工具使用的,平时用不到但是用的时候得有】

HostName=192.168.2.183 指定特定sql节点的IP地址,本例中是192.168.2.183

[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=3    
# How much memory to allocate for data storage
DataMemory=4000M    
# How much memory to allocate for index storage
IndexMemory=512M   

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.183        
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.184        
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.185       
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndbd]
# Options for data node 1:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.183      
# Node ID for this data node    
NodeId=11    
# Directory for this data node's data files                   
DataDir=/usr/local/mysql/data   

[ndbd]
# Options for data node 2:
# Hostname or IP address
HostName=192.168.2.184     
# Node ID for this data node     
NodeId=12
# Directory for this data node's data files                    
DataDir=/usr/local/mysql/data   

[ndbd]
# Options for data node 3:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.185  
# Node ID for this data node    
NodeId=13  
# Directory for this data node's data files                   
DataDir=/usr/local/mysql/data   

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)        
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)      

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)   
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)    
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)    
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              

在创建了所有配置文件并指定了这些最小选项之后,就可以继续启动群集并验证所有进程是否都在运行了。我们在3.4章节讨论如何做到这一点。

有关可用NDB群集配置参数及其用途的详细信息,请参见第链接: NDB集群配置文件 https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-config-file.html 和 NDB集群的配置 https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-configuration.html 。有关与备份相关的NDB群集配置,请参见 NDB群集备份的配置 链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-configuration.html

群集管理节点的默认端口是1186。对于数据节点,集群可以自动从那些已经空闲的端口中分配端口。

没有启动任何sql节点、数据节点、管理节点情况下,在管理节点主机上执行ndb_mgm ,然后执行show显示如下

在这里插入图片描述

连不上任何管理节点,因为没有启动任何管理节点。

[root@centos ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show 
Unable to connect with connect string: nodeid=0,192.168.2.183:1186,192.168.2.184:1186,192.168.2.185:1186
Retrying every 5 seconds. Attempts left: 11 10 9 8 7 6 5 4 3 2 1, failed.
ndb_mgm> exit
[root@centos ~]# 

如果只有一个管理节点启动,在任何管理节点主机上执行ndb_mgm ,然后执行show显示连接到启动的那个管理节点。

下图是在183这台管理节点上执行ndb_mgm ,但是显示Connected to Management Server at: 192.168.2.185:1186

这是因为只有185管理节点启动了,只能连接到185,其他的管理节点连不通。

在这里插入图片描述

3.4、NDB集群的初始启动

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-first-start.html

在配置好集群之后,启动集群并不是很困难。每个群集节点进程必须在其所在的主机上单独启动。应该首先启动管理节点,然后是数据节点,最后是任何SQL节点:

3.4.1、启动管理节点

在管理主机上,从系统shell发出以下命令以启动管理节点进程:

ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini

第一次启动时,必须使用-f或–config-file选项告知ndb_mgmd在何处找到其配置文件,此选项还要求指定–initial。
第一次启动时,此选项还要求指定–initial

–initial : 使管理服务器从配置文件重新加载配置数据,忽略配置缓存。

3.4.1.1、启动第一个管理节点

启动前

在这里插入图片描述

启动后

在这里插入图片描述

ndb-mgnd的启动日志在/var/lib/mysql-cluster/目录下

cd /var/lib/mysql-cluster/

在这里插入图片描述

[root@centos ~]# cd  /var/lib/mysql-cluster
[root@centos mysql-cluster]# ls -lhrt
total 16K
-rw-r--r-- 1 root root 2.3K Sep 12 14:06 config.ini
-rw-r--r-- 1 root root    4 Sep 12 14:09 ndb_1.pid
-rw-r--r-- 1 root root   12 Sep 12 14:09 ndb_1_out.log
-rw-r--r-- 1 root root  465 Sep 12 14:09 ndb_1_cluster.log
[root@centos mysql-cluster]# cat ndb_1.pid 
2459[root@centos mysql-cluster]# cat ndb_1_out.log 
==INITIAL==
[root@centos mysql-cluster]# cat ndb_1_cluster.log 
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Id: 1, Command port: *:1186
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1 connected
[root@centos mysql-cluster]# 

启动第一个管理节点后,在管理节点主机上执行ndb_mgm ,然后执行show显示如下

在这里插入图片描述

[root@centos ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1186
ERROR Message: The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 and 3 to connect.

Could not get configuration
*  4012: Failed to get configuration
*        The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 2 and 3 to connect.
ndb_mgm> 
ndb_mgm> 

因为第二个和第三个管理节点还没启动 所以显示如下报错:
无法获取配置
*4012:获取配置失败
*尚未由所有定义的管理服务器确认群集配置。此管理服务器仍在等待节点2和3连接。

3.4.1.2、启动第二个管理节点

启动前

在这里插入图片描述

启动后

在这里插入图片描述

因为第三个管理节点还没启动 所以显示如下报错:
无法获取配置
*4012:获取配置失败
*尚未由所有定义的管理服务器确认群集配置。此管理服务器仍在等待节点3连接。

[root@centos mysql-cluster]# netstat -antlp|grep LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1992/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1748/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2071/master         
tcp        0      0 :::22                       :::*                        LISTEN      1992/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1748/cupsd          
tcp        0      0 ::1:25                      :::*                        LISTEN      2071/master         
[root@centos mysql-cluster]# ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17
2025-09-12 14:24:13 [MgmtSrvr] INFO     -- The default config directory '/usr/local/mysql/mysql-cluster' does not exist. Trying to create it...
2025-09-12 14:24:13 [MgmtSrvr] INFO     -- Sucessfully created config directory
2025-09-12 14:24:13 [MgmtSrvr] WARNING  -- at line 78: Cluster configuration warning:
  arbitrator with id 1 and db node with id 11 on same host 192.168.2.183
  arbitrator with id 2 and db node with id 12 on same host 192.168.2.184
  arbitrator with id 3 and db node with id 13 on same host 192.168.2.185
  Running arbitrator on the same host as a database node may
  cause complete cluster shutdown in case of host failure.
[root@centos mysql-cluster]# netstat -antlp|grep LISTEN
tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      2519/ndb_mgmd       
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1992/sshd           
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1748/cupsd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2071/master         
tcp        0      0 :::22                       :::*                        LISTEN      1992/sshd           
tcp        0      0 ::1:631                     :::*                        LISTEN      1748/cupsd          
tcp        0      0 ::1:25                      :::*                        LISTEN      2071/master         
[root@centos mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1186
ERROR Message: The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 3 to connect.

Could not get configuration
*  4012: Failed to get configuration
*        The cluster configuration is not yet confirmed by all defined management servers. This management server is still waiting for node 3 to connect.
ndb_mgm> exit
[root@centos mysql-cluster]# 

ndb-mgnd的启动日志在/var/lib/mysql-cluster/目录下

cd /var/lib/mysql-cluster/

在这里插入图片描述

[root@centos mysql-cluster]# cd /var/lib/mysql-cluster/
[root@centos mysql-cluster]# ls -lhrt
total 16K
-rw-r--r-- 1 root root 2.3K Sep 12 11:50 config.ini
-rw-r--r-- 1 root root    4 Sep 12 14:24 ndb_2.pid
-rw-r--r-- 1 root root   12 Sep 12 14:24 ndb_2_out.log
-rw-r--r-- 1 root root  593 Sep 12 14:24 ndb_2_cluster.log
[root@centos mysql-cluster]# cat ndb_2.pid
2519[root@centos mysql-cluster]# cat ndb_2_out.log
==INITIAL==
[root@centos mysql-cluster]# cat  ndb_2_cluster.log
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Id: 2, Command port: *:1186
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2: Node 2 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2: Node 1 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2 connected
[root@centos mysql-cluster]# 

在启动了管理节点2 后,查看管理节点1的集群日志如下 管理节点1上显示 连接到了管理节点2

在这里插入图片描述

[root@centos mysql-cluster]# cat ndb_1_cluster.log 
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Id: 1, Command port: *:1186
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 1: Node 2 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2 connected
[root@centos mysql-cluster]# 
3.4.1.3、启动第三个管理节点

启动前

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

ndb-mgnd的启动日志在/var/lib/mysql-cluster/目录下

cd /var/lib/mysql-cluster/

在这里插入图片描述

[root@centos mysql-cluster]# cat ndb_3_cluster.log 
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Id: 3, Command port: *:1186
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 3: Node 3 Connected
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 3: Node 1 Connected
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 3: Node 2 Connected
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Configuration 1 commited
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 2 connected
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Node 3 connected
[root@centos mysql-cluster]# 

在这里插入图片描述

当第三个管理节点启动后,就表示所有管理节点都启动成功了,因为一共只有3个管理节点。然后查看第1个和第二个管理节点的节点日志文件

第一个管理节点
在所有管理节点都启动后,集群会提交一份配置(即当前的配置)。

在这里插入图片描述

[root@centos mysql-cluster]# cd  /var/lib/mysql-cluster
[root@centos mysql-cluster]# ls -lhrt 
total 16K
-rw-r--r-- 1 root root 2.3K Sep 12 14:06 config.ini
-rw-r--r-- 1 root root    4 Sep 12 14:09 ndb_1.pid
-rw-r--r-- 1 root root   26 Sep 12 14:34 ndb_1_out.log
-rw-r--r-- 1 root root  956 Sep 12 14:34 ndb_1_cluster.log
[root@centos mysql-cluster]# cat ndb_1_out.log
==INITIAL==
==CONFIRMED==
[root@centos mysql-cluster]# cat ndb_1_cluster.log
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Id: 1, Command port: *:1186
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2025-09-12 14:09:12 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 1: Node 2 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2 connected
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Node 1: Node 3 Connected
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Node 3 connected
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Starting initial configuration change
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Configuration 1 commited
2025-09-12 14:34:38 [MgmtSrvr] INFO     -- Config change completed! New generation: 1
[root@centos mysql-cluster]# 

第二个管理节点
在所有管理节点都启动后,集群会提交一份配置(即当前的配置)。

在这里插入图片描述

[root@centos mysql-cluster]# cd /var/lib/mysql-cluster/
[root@centos mysql-cluster]# ls -lhrt
total 16K
-rw-r--r-- 1 root root 2.3K Sep 12 11:50 config.ini
-rw-r--r-- 1 root root    4 Sep 12 14:24 ndb_2.pid
-rw-r--r-- 1 root root   26 Sep 12 14:34 ndb_2_out.log
-rw-r--r-- 1 root root  789 Sep 12 14:34 ndb_2_cluster.log
[root@centos mysql-cluster]# cat ndb_2_out.log
==INITIAL==
==CONFIRMED==
[root@centos mysql-cluster]# cat ndb_2_cluster.log
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster/config.ini', will try to set it when all ndb_mgmd(s) started
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Id: 2, Command port: *:1186
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2: Node 2 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2: Node 1 Connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-12 14:24:14 [MgmtSrvr] INFO     -- Node 2 connected
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Configuration 1 commited
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Node 2: Node 3 Connected
2025-09-12 14:34:37 [MgmtSrvr] INFO     -- Node 3 connected
[root@centos mysql-cluster]#

至此所有管理节点启动完成,查看确认所有管理节点都在线即可,然后启动数据节点

在这里插入图片描述

[root@centos mysql-cluster]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     3 node(s)
id=11 (not connected, accepting connect from 192.168.2.183)
id=12 (not connected, accepting connect from 192.168.2.184)
id=13 (not connected, accepting connect from 192.168.2.185)

[ndb_mgmd(MGM)] 3 node(s)
id=1    @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)
id=2    @192.168.2.184  (mysql-5.7.29 ndb-7.5.17)
id=3    @192.168.2.185  (mysql-5.7.29 ndb-7.5.17)

[mysqld(API)]   3 node(s)
id=14 (not connected, accepting connect from 192.168.2.183)
id=15 (not connected, accepting connect from 192.168.2.184)
id=16 (not connected, accepting connect from 192.168.2.185)

我们在配置文件中仅仅指定了三个数据节点的ID,NodeId=11、12、13。没有指定管理节点和sql节点的ID。这种情况下 集群会自动指定数据节点和sql节点的ID,管理节点的ID从1开始 NodeId=1、2、3。sql节点的ID跟在数据节点后面 NodeId=14、15、16。

3.4.2、启动数据节点

在每个数据节点主机上,运行以下命令以启动ndbd进程:

ndbd
3.4.2.1、启动第一个数据节点

启动前

在这里插入图片描述

在这里插入图片描述

启动后

在这里插入图片描述

红色框是本机183到183、184、185管理节点的连接。

在这里插入图片描述

3.4.2.2、启动第二个数据节点

启动前

在这里插入图片描述

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

3.4.2.3、启动第三个数据节点

在这里插入图片描述

启动前

在这里插入图片描述

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

3.4.3、启动sql节点

在每个sql节点主机上,运行以下命令以启动mysqld进程:

cd /usr/local/mysql
bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
3.4.3.1、启动第一个sql节点

启动前

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看第一个sql节点启动日志

cat /var/log/mysqld.log 

在这里插入图片描述

在这里插入图片描述

[root@centos mysql]# cat /var/log/mysqld.log 
2025-09-12T07:59:12.540534Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-09-12T07:59:12.540679Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2025-09-12T07:59:12.540705Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.29-ndb-7.5.17-cluster-gpl) starting as process 3135 ...
2025-09-12T07:59:12.566740Z 0 [Note] InnoDB: PUNCH HOLE support available
2025-09-12T07:59:12.566774Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2025-09-12T07:59:12.566777Z 0 [Note] InnoDB: Uses event mutexes
2025-09-12T07:59:12.566778Z 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2025-09-12T07:59:12.566780Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2025-09-12T07:59:12.566781Z 0 [Note] InnoDB: Using Linux native AIO
2025-09-12T07:59:12.732338Z 0 [Note] InnoDB: Number of pools: 1
2025-09-12T07:59:12.732748Z 0 [Note] InnoDB: Using CPU crc32 instructions
2025-09-12T07:59:12.738194Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2025-09-12T07:59:12.763887Z 0 [Note] InnoDB: Completed initialization of buffer pool
2025-09-12T07:59:12.772089Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2025-09-12T07:59:12.798744Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2025-09-12T07:59:12.821218Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2025-09-12T07:59:12.821248Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2025-09-12T07:59:12.867146Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2025-09-12T07:59:12.867492Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2025-09-12T07:59:12.867498Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2025-09-12T07:59:12.872936Z 0 [Note] InnoDB: Waiting for purge to start
2025-09-12T07:59:12.923120Z 0 [Note] InnoDB: 5.7.29 started; log sequence number 2634120
2025-09-12T07:59:12.929600Z 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T07:59:12.930854Z 0 [Note] Plugin 'FEDERATED' is disabled.
2025-09-12T07:59:12.948023Z 0 [Note] InnoDB: Buffer pool(s) load completed at 250912 15:59:12
2025-09-12T07:59:13.175354Z 0 [Note] NDB: NodeID is 14, management server '192.168.2.183:1186'
2025-09-12T07:59:13.576042Z 0 [Note] NDB[0]: NodeID: 14, all storage nodes connected
2025-09-12T07:59:13.576178Z 0 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds
2025-09-12T07:59:13.576610Z 0 [Note] NDB Util: Starting...
2025-09-12T07:59:13.576848Z 0 [Note] NDB Binlog: Starting...
2025-09-12T07:59:13.577602Z 1 [Note] NDB Util: Wait for server start completed
2025-09-12T07:59:13.577226Z 0 [Note] NDB Index Stat: Starting...
2025-09-12T07:59:13.577661Z 2 [Note] NDB Binlog: Started
2025-09-12T07:59:13.577710Z 2 [Note] NDB Binlog: Setting up
2025-09-12T07:59:13.577664Z 0 [Note] NDB Index Stat: Wait for server start completed
2025-09-12T07:59:13.580101Z 2 [Note] NDB Binlog: Created schema Ndb object, reference: 0x8004000e, name: 'Ndb Binlog schema change monitoring'
2025-09-12T07:59:13.580235Z 2 [Note] NDB Binlog: Created injector Ndb object, reference: 0x8005000e, name: 'Ndb Binlog data change monitoring'
2025-09-12T07:59:13.580250Z 2 [Note] NDB Binlog: Setup completed
2025-09-12T07:59:13.580253Z 2 [Note] NDB Binlog: Wait for server start completed
2025-09-12T07:59:13.618137Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2025-09-12T07:59:13.618156Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2025-09-12T07:59:13.620400Z 0 [Warning] CA certificate ca.pem is self signed.
2025-09-12T07:59:13.620929Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2025-09-12T07:59:13.621365Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2025-09-12T07:59:13.621389Z 0 [Note] IPv6 is available.
2025-09-12T07:59:13.621402Z 0 [Note]   - '::' resolves to '::';
2025-09-12T07:59:13.621410Z 0 [Note] Server socket created on IP: '::'.
2025-09-12T07:59:13.651801Z 0 [Note] Event Scheduler: Loaded 0 events
2025-09-12T07:59:13.651951Z 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.7.29-ndb-7.5.17-cluster-gpl'  socket: '/usr/local/mysql/data/mysql.sock'  port: 3306  MySQL Cluster Community Server (GPL)
2025-09-12T07:59:13.651976Z 1 [Note] NDB Util: Wait for cluster to start
2025-09-12T07:59:13.651985Z 2 [Note] NDB Binlog: Check for incidents
2025-09-12T07:59:13.651992Z 2 [Note] NDB Binlog: Checking for any pending binlog purges
2025-09-12T07:59:13.652003Z 2 [Note] NDB Binlog: Wait for cluster to start
2025-09-12T07:59:13.652034Z 0 [Note] NDB Index Stat: Wait for cluster to start
2025-09-12T07:59:13.652246Z 0 [Note] NDB Index Stat: Started
2025-09-12T07:59:13.652251Z 1 [Note] NDB Util: Started
2025-09-12T07:59:13.652572Z 0 [Note] NDB Index Stat: created Ndb object 'Ndb Index Stat', ref: 0x8007000e
2025-09-12T07:59:13.671672Z 2 [Note] NDB: Creating mysql.ndb_schema
2025-09-12T07:59:13.759522Z 2 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_schema
2025-09-12T07:59:13.892717Z 2 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)
2025-09-12T07:59:13.892940Z 2 [Note] NDB: Creating mysql.ndb_apply_status
2025-09-12T07:59:13.958767Z 2 [Note] NDB Binlog: CREATE TABLE Event: REPL$mysql/ndb_apply_status
2025-09-12T07:59:14.042765Z 2 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)
2025-09-12T07:59:14.043058Z 2 [Note] NDB: Cleaning stray tables from database 'ndb_11_fs'
2025-09-12T07:59:14.043111Z 2 [Note] NDB: Cleaning stray tables from database 'ndbinfo'
2025-09-12T07:59:14.045128Z 2 [Note] NDB: Cleaning stray tables from database 'performance_schema'
2025-09-12T07:59:14.045996Z 2 [Note] NDB: Cleaning stray tables from database 'sys'
2025-09-12T07:59:14.048196Z 2 [Note] NDB: missing frm for mysql.ndb_index_stat_sample, discovering...
2025-09-12T07:59:14.049557Z 2 [Note] NDB: missing frm for mysql.ndb_index_stat_head, discovering...
2025-09-12T07:59:14.049952Z 2 [Note] NDB Binlog: Wait for first event
2025-09-12 15:59:14 [NdbApi] INFO     -- Flushing incomplete GCI:s < 392/13
2025-09-12 15:59:14 [NdbApi] INFO     -- Flushing incomplete GCI:s < 392/13
2025-09-12T07:59:14.151217Z 2 [Note] NDB Binlog: starting log at epoch 392/13
2025-09-12T07:59:14.151223Z 2 [Note] NDB Binlog: Got first event
2025-09-12T07:59:14.151225Z 2 [Note] NDB Binlog: ndb tables writable
2025-09-12T07:59:14.151500Z 2 [Note] NDB Binlog: Startup and setup completed
[root@centos mysql]#
3.4.3.2、启动第二个sql节点

启动前

在这里插入图片描述

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

查看第二个sql节点启动日志

cat /var/log/mysqld.log 

在这里插入图片描述

在这里插入图片描述

[root@centos mysql]# cat /var/log/mysqld.log 
2025-09-12T08:11:54.881444Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-09-12T08:11:54.881604Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2025-09-12T08:11:54.881632Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.29-ndb-7.5.17-cluster-gpl) starting as process 3094 ...
2025-09-12T08:11:54.901206Z 0 [Note] InnoDB: PUNCH HOLE support available
2025-09-12T08:11:54.901243Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2025-09-12T08:11:54.901246Z 0 [Note] InnoDB: Uses event mutexes
2025-09-12T08:11:54.901248Z 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2025-09-12T08:11:54.901249Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2025-09-12T08:11:54.901251Z 0 [Note] InnoDB: Using Linux native AIO
2025-09-12T08:11:55.069088Z 0 [Note] InnoDB: Number of pools: 1
2025-09-12T08:11:55.069434Z 0 [Note] InnoDB: Using CPU crc32 instructions
2025-09-12T08:11:55.075578Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2025-09-12T08:11:55.100620Z 0 [Note] InnoDB: Completed initialization of buffer pool
2025-09-12T08:11:55.108118Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2025-09-12T08:11:55.135709Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2025-09-12T08:11:55.160831Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2025-09-12T08:11:55.160854Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2025-09-12T08:11:55.203699Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2025-09-12T08:11:55.208729Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2025-09-12T08:11:55.208740Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2025-09-12T08:11:55.214225Z 0 [Note] InnoDB: Waiting for purge to start
2025-09-12T08:11:55.264395Z 0 [Note] InnoDB: 5.7.29 started; log sequence number 2634120
2025-09-12T08:11:55.270425Z 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T08:11:55.271152Z 0 [Note] Plugin 'FEDERATED' is disabled.
2025-09-12T08:11:55.280313Z 0 [Note] InnoDB: Buffer pool(s) load completed at 250912 16:11:55
2025-09-12T08:11:55.513091Z 0 [Note] NDB: NodeID is 15, management server '192.168.2.183:1186'
2025-09-12T08:11:55.913972Z 0 [Note] NDB[0]: NodeID: 15, all storage nodes connected
2025-09-12T08:11:55.914109Z 0 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds
2025-09-12T08:11:55.914441Z 0 [Note] NDB Binlog: Starting...
2025-09-12T08:11:55.914508Z 0 [Note] NDB Util: Starting...
2025-09-12T08:11:55.914643Z 0 [Note] NDB Index Stat: Starting...
2025-09-12T08:11:55.914743Z 0 [Note] NDB Index Stat: Wait for server start completed
2025-09-12T08:11:55.914792Z 2 [Note] NDB Util: Wait for server start completed
2025-09-12T08:11:55.914794Z 1 [Note] NDB Binlog: Started
2025-09-12T08:11:55.914821Z 1 [Note] NDB Binlog: Setting up
2025-09-12T08:11:55.915042Z 1 [Note] NDB Binlog: Created schema Ndb object, reference: 0x8004000f, name: 'Ndb Binlog schema change monitoring'
2025-09-12T08:11:55.915110Z 1 [Note] NDB Binlog: Created injector Ndb object, reference: 0x8005000f, name: 'Ndb Binlog data change monitoring'
2025-09-12T08:11:55.915132Z 1 [Note] NDB Binlog: Setup completed
2025-09-12T08:11:55.915137Z 1 [Note] NDB Binlog: Wait for server start completed
2025-09-12T08:11:55.956972Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2025-09-12T08:11:55.957010Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2025-09-12T08:11:55.959224Z 0 [Warning] CA certificate ca.pem is self signed.
2025-09-12T08:11:55.959669Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2025-09-12T08:11:55.959982Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2025-09-12T08:11:55.960019Z 0 [Note] IPv6 is available.
2025-09-12T08:11:55.960032Z 0 [Note]   - '::' resolves to '::';
2025-09-12T08:11:55.960041Z 0 [Note] Server socket created on IP: '::'.
2025-09-12T08:11:55.995880Z 0 [Note] Event Scheduler: Loaded 0 events
2025-09-12T08:11:55.996382Z 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.7.29-ndb-7.5.17-cluster-gpl'  socket: '/usr/local/mysql/data/mysql.sock'  port: 3306  MySQL Cluster Community Server (GPL)
2025-09-12T08:11:55.996435Z 0 [Note] NDB Index Stat: Wait for cluster to start
2025-09-12T08:11:55.996469Z 2 [Note] NDB Util: Wait for cluster to start
2025-09-12T08:11:55.996488Z 1 [Note] NDB Binlog: Check for incidents
2025-09-12T08:11:55.996496Z 1 [Note] NDB Binlog: Checking for any pending binlog purges
2025-09-12T08:11:55.996514Z 1 [Note] NDB Binlog: Wait for cluster to start
2025-09-12T08:11:55.996538Z 2 [Note] NDB Util: Started
2025-09-12T08:11:55.996555Z 0 [Note] NDB Index Stat: Started
2025-09-12T08:11:55.996713Z 0 [Note] NDB Index Stat: created Ndb object 'Ndb Index Stat', ref: 0x8007000f
2025-09-12T08:11:56.070258Z 1 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_schema
2025-09-12T08:11:56.145995Z 1 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)
2025-09-12T08:11:56.148170Z 1 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_apply_status
2025-09-12T08:11:56.149793Z 1 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)
2025-09-12T08:11:56.149934Z 1 [Note] NDB: Cleaning stray tables from database 'ndb_12_fs'
2025-09-12T08:11:56.149971Z 1 [Note] NDB: Cleaning stray tables from database 'ndbinfo'
2025-09-12T08:11:56.150504Z 1 [Note] NDB: Cleaning stray tables from database 'performance_schema'
2025-09-12T08:11:56.150969Z 1 [Note] NDB: Cleaning stray tables from database 'sys'
2025-09-12T08:11:56.152350Z 1 [Note] NDB: missing frm for mysql.ndb_index_stat_sample, discovering...
2025-09-12T08:11:56.152916Z 1 [Note] NDB: missing frm for mysql.ndb_index_stat_head, discovering...
2025-09-12T08:11:56.153117Z 1 [Note] NDB Binlog: Wait for first event
2025-09-12 16:11:56 [NdbApi] INFO     -- Flushing incomplete GCI:s < 757/16
2025-09-12 16:11:56 [NdbApi] INFO     -- Flushing incomplete GCI:s < 757/16
2025-09-12T08:11:56.252281Z 1 [Note] NDB Binlog: starting log at epoch 757/16
2025-09-12T08:11:56.252289Z 1 [Note] NDB Binlog: Got first event
2025-09-12T08:11:56.252292Z 1 [Note] NDB Binlog: ndb tables writable
2025-09-12T08:11:56.252604Z 1 [Note] NDB Binlog: Startup and setup completed
2025-09-12T08:11:56.252793Z 1 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 14, subscriber bitmask 00000c000
2025-09-12T08:11:56.252799Z 1 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 14, subscriber bitmask 00000c000
2025-09-12T08:11:56.252801Z 1 [Note] NDB Schema dist: Data node: 13 reports subscribe from node 14, subscriber bitmask 00000c000
[root@centos mysql]# 
3.4.3.3、启动第三个sql节点

启动前

在这里插入图片描述

启动后

在这里插入图片描述

在这里插入图片描述

查看第三个sql节点启动日志

cat /var/log/mysqld.log 

在这里插入图片描述

在这里插入图片描述

[root@centos mysql]# cat /var/log/mysqld.log 
2025-09-12T08:17:11.455519Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-09-12T08:17:11.455662Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2025-09-12T08:17:11.455685Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.29-ndb-7.5.17-cluster-gpl) starting as process 3060 ...
2025-09-12T08:17:11.482301Z 0 [Note] InnoDB: PUNCH HOLE support available
2025-09-12T08:17:11.482430Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2025-09-12T08:17:11.482433Z 0 [Note] InnoDB: Uses event mutexes
2025-09-12T08:17:11.482435Z 0 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2025-09-12T08:17:11.482436Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2025-09-12T08:17:11.482438Z 0 [Note] InnoDB: Using Linux native AIO
2025-09-12T08:17:11.654917Z 0 [Note] InnoDB: Number of pools: 1
2025-09-12T08:17:11.655411Z 0 [Note] InnoDB: Using CPU crc32 instructions
2025-09-12T08:17:11.661566Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2025-09-12T08:17:11.691911Z 0 [Note] InnoDB: Completed initialization of buffer pool
2025-09-12T08:17:11.699975Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2025-09-12T08:17:11.728124Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
2025-09-12T08:17:11.749858Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2025-09-12T08:17:11.749887Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2025-09-12T08:17:11.801241Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2025-09-12T08:17:11.801534Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
2025-09-12T08:17:11.801538Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
2025-09-12T08:17:11.807079Z 0 [Note] InnoDB: 5.7.29 started; log sequence number 2634120
2025-09-12T08:17:11.807475Z 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T08:17:11.807958Z 0 [Note] Plugin 'FEDERATED' is disabled.
2025-09-12T08:17:11.823896Z 0 [Note] InnoDB: Buffer pool(s) load completed at 250912 16:17:11
2025-09-12T08:17:12.049948Z 0 [Note] NDB: NodeID is 16, management server '192.168.2.183:1186'
2025-09-12T08:17:12.450608Z 0 [Note] NDB[0]: NodeID: 16, all storage nodes connected
2025-09-12T08:17:12.450949Z 0 [Warning] NDB: server id set to zero - changes logged to bin log with server id zero will be logged with another server id by slave mysqlds
2025-09-12T08:17:12.451233Z 0 [Note] NDB Binlog: Starting...
2025-09-12T08:17:12.451408Z 1 [Note] NDB Binlog: Started
2025-09-12T08:17:12.451418Z 1 [Note] NDB Binlog: Setting up
2025-09-12T08:17:12.451481Z 0 [Note] NDB Util: Starting...
2025-09-12T08:17:12.452181Z 0 [Note] NDB Index Stat: Starting...
2025-09-12T08:17:12.452635Z 0 [Note] NDB Index Stat: Wait for server start completed
2025-09-12T08:17:12.453079Z 1 [Note] NDB Binlog: Created schema Ndb object, reference: 0x80040010, name: 'Ndb Binlog schema change monitoring'
2025-09-12T08:17:12.453181Z 2 [Note] NDB Util: Wait for server start completed
2025-09-12T08:17:12.453231Z 1 [Note] NDB Binlog: Created injector Ndb object, reference: 0x80050010, name: 'Ndb Binlog data change monitoring'
2025-09-12T08:17:12.453238Z 1 [Note] NDB Binlog: Setup completed
2025-09-12T08:17:12.453241Z 1 [Note] NDB Binlog: Wait for server start completed
2025-09-12T08:17:12.496034Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2025-09-12T08:17:12.496056Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
2025-09-12T08:17:12.498193Z 0 [Warning] CA certificate ca.pem is self signed.
2025-09-12T08:17:12.498586Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
2025-09-12T08:17:12.498948Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2025-09-12T08:17:12.498980Z 0 [Note] IPv6 is available.
2025-09-12T08:17:12.498986Z 0 [Note]   - '::' resolves to '::';
2025-09-12T08:17:12.498994Z 0 [Note] Server socket created on IP: '::'.
2025-09-12T08:17:12.534994Z 0 [Note] Event Scheduler: Loaded 0 events
2025-09-12T08:17:12.535517Z 0 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.7.29-ndb-7.5.17-cluster-gpl'  socket: '/usr/local/mysql/data/mysql.sock'  port: 3306  MySQL Cluster Community Server (GPL)
2025-09-12T08:17:12.535627Z 0 [Note] NDB Index Stat: Wait for cluster to start
2025-09-12T08:17:12.535707Z 0 [Note] NDB Index Stat: Started
2025-09-12T08:17:12.535710Z 1 [Note] NDB Binlog: Check for incidents
2025-09-12T08:17:12.535718Z 1 [Note] NDB Binlog: Checking for any pending binlog purges
2025-09-12T08:17:12.535721Z 1 [Note] NDB Binlog: Wait for cluster to start
2025-09-12T08:17:12.535744Z 2 [Note] NDB Util: Wait for cluster to start
2025-09-12T08:17:12.535982Z 0 [Note] NDB Index Stat: created Ndb object 'Ndb Index Stat', ref: 0x80060010
2025-09-12T08:17:12.536135Z 2 [Note] NDB Util: Started
2025-09-12T08:17:12.630616Z 1 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_schema
2025-09-12T08:17:12.704068Z 1 [Note] NDB Binlog: logging ./mysql/ndb_schema (UPDATED,USE_WRITE)
2025-09-12T08:17:12.705502Z 1 [Note] NDB Binlog: DISCOVER TABLE Event: REPL$mysql/ndb_apply_status
2025-09-12T08:17:12.706910Z 1 [Note] NDB Binlog: logging ./mysql/ndb_apply_status (UPDATED,USE_WRITE)
2025-09-12T08:17:12.706997Z 1 [Note] NDB: Cleaning stray tables from database 'ndb_13_fs'
2025-09-12T08:17:12.707013Z 1 [Note] NDB: Cleaning stray tables from database 'ndbinfo'
2025-09-12T08:17:12.707735Z 1 [Note] NDB: Cleaning stray tables from database 'performance_schema'
2025-09-12T08:17:12.707993Z 1 [Note] NDB: Cleaning stray tables from database 'sys'
2025-09-12T08:17:12.710409Z 1 [Note] NDB: missing frm for mysql.ndb_index_stat_sample, discovering...
2025-09-12T08:17:12.711036Z 1 [Note] NDB: missing frm for mysql.ndb_index_stat_head, discovering...
2025-09-12T08:17:12.711506Z 1 [Note] NDB Binlog: Wait for first event
2025-09-12 16:17:12 [NdbApi] INFO     -- Flushing incomplete GCI:s < 910/12
2025-09-12 16:17:12 [NdbApi] INFO     -- Flushing incomplete GCI:s < 910/12
2025-09-12T08:17:12.716346Z 1 [Note] NDB Binlog: starting log at epoch 910/12
2025-09-12T08:17:12.716349Z 1 [Note] NDB Binlog: Got first event
2025-09-12T08:17:12.716351Z 1 [Note] NDB Binlog: ndb tables writable
2025-09-12T08:17:12.716549Z 1 [Note] NDB Binlog: Startup and setup completed
2025-09-12T08:17:12.716661Z 1 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 15, subscriber bitmask 000018000
2025-09-12T08:17:12.716663Z 1 [Note] NDB Schema dist: Data node: 11 reports subscribe from node 14, subscriber bitmask 00001c000
2025-09-12T08:17:12.716664Z 1 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 15, subscriber bitmask 000018000
2025-09-12T08:17:12.716665Z 1 [Note] NDB Schema dist: Data node: 12 reports subscribe from node 14, subscriber bitmask 00001c000
2025-09-12T08:17:12.716667Z 1 [Note] NDB Schema dist: Data node: 13 reports subscribe from node 15, subscriber bitmask 000018000
2025-09-12T08:17:12.716668Z 1 [Note] NDB Schema dist: Data node: 13 reports subscribe from node 14, subscriber bitmask 00001c000
[root@centos mysql]# 
3.4.3.4、把sql节点添加到PATH变量

添加mysql的环境变量
vi /etc/profile 最后面添加2行

export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

在这里插入图片描述

使得mysql环境变量生效

source  /etc/profile
3.4.3.5、修改sql节点初始密码并允许远程访问sql节点

链接: https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/postinstallation.html

在sql节点主机上,使用初始化sql节点时生成的默认密码登录mysql ndb cluster集群。

mysql -uroot -p

没修改默认密码前不能进行数据库sql操作

在这里插入图片描述

修改Mysql默认密码为Mysql@123

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql@123' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = "%" where user = "root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Mysql@123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 

使用新密码登录mysql数据库

在这里插入图片描述

3.4.4、确认集群启动完成

如果一切正常,并且集群已经正确设置,那么集群现在应该可以运行了。您可以通过在管理节点主机上调用ndb_mgm管理节点客户端来测试这一点。输出应该像这里显示的那样,尽管你可能会看到输出中的一些细微差异,这取决于你使用的MySQL的确切版本:

在这里插入图片描述

[root@centos mysql]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     3 node(s)
id=11   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0, *)
id=12   @192.168.2.184  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0)
id=13   @192.168.2.185  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0)

[ndb_mgmd(MGM)] 3 node(s)
id=1    @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)
id=2    @192.168.2.184  (mysql-5.7.29 ndb-7.5.17)
id=3    @192.168.2.185  (mysql-5.7.29 ndb-7.5.17)

[mysqld(API)]   12 node(s)
id=14   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)
id=15 (not connected, accepting connect from 192.168.2.183)
id=16 (not connected, accepting connect from 192.168.2.183)
id=17 (not connected, accepting connect from 192.168.2.183)
id=18   @192.168.2.184  (mysql-5.7.29 ndb-7.5.17)
id=19 (not connected, accepting connect from 192.168.2.184)
id=20 (not connected, accepting connect from 192.168.2.184)
id=21 (not connected, accepting connect from 192.168.2.184)
id=22   @192.168.2.185  (mysql-5.7.29 ndb-7.5.17)
id=23 (not connected, accepting connect from 192.168.2.185)
id=24 (not connected, accepting connect from 192.168.2.185)
id=25 (not connected, accepting connect from 192.168.2.185)

ndb_mgm> 
ndb_mgm>  

SQL节点在这里被引用为[mysqld(API)],这反映了mysqld进程充当NDB集群API节点的事实。

在SHOW命令的输出中显示的给定NDB集群SQL或其他API节点的IP地址是SQL或API节点用于连接到集群数据节点而不是任何管理节点的地址。

您现在应该准备好在NDB集群中使用数据库,表和数据。有关简要讨论,请参见第3.5节“包含表和数据的NDB集群示例”。

3.5、包含表和数据的MySQL NDB集群示例

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-example-data.html

在NDB集群中使用数据库表和数据与在标准MySQL中使用数据库表和数据没有太大区别。有两个关键点需要牢记:

对于要在集群中复制的表,它必须使用NDBCLUSTER存储引擎。若要指定此选项,请在创建表时使用ENGINE=NDBCLUSTER或ENGINE=NDB选项:

CREATE TABLE tbl_name (col_name column_definitions) ENGINE=NDBCLUSTER;

或者,对于使用不同存储引擎的现有表,使用ALTER TABLE将表更改为使用NDBCLUSTER:

ALTER TABLE tbl_name ENGINE=NDBCLUSTER;

如果您使用mysqldump的输出从现有数据库导入表,则可以在文本编辑器中打开SQL脚本,并将ENGINE选项添加到任何表创建语句中,或替换任何现有ENGINE选项。

在SQL节点上运行SELECT查询与在MySQL服务器的任何其他实例上运行它们没有什么不同。要从命令行运行查询,首先需要以常规方式登录MySQL Monitor(在Enter password:提示符下指定root密码):

[root@centos mysql-cluster]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.29-ndb-7.5.17-cluster-gpl MySQL Cluster Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

值得注意的是,集群节点在相互访问时不使用MySQL特权系统。设置或更改MySQL用户帐户(包括根帐户)只会影响访问SQL节点的应用程序,而不会影响节点之间的交互。有关更多信息,请参见21.6.18.2部分“NDB群集和MySQL权限”。

使用MySQL的应用程序可以使用标准API来访问NDB表。重要的是要记住,您的应用程序必须访问SQL节点,而不是管理或数据节点。这个简短的例子展示了我们如何通过使用PHP 5.X mysqli扩展来执行SELECT语句,该扩展运行在网络上其他地方的Web服务器上:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type"
           content="text/html; charset=iso-8859-1">
  <title>SIMPLE mysqli SELECT</title>
</head>
<body>
<?php
  # connect to SQL node:
  $link = new mysqli('198.51.100.20', 'root', 'root_password', 'world');
  # parameters for mysqli constructor are:
  #   host, user, password, database

  if( mysqli_connect_errno() )
    die("Connect failed: " . mysqli_connect_error());

  $query = "SELECT Name, Population
            FROM City
            ORDER BY Population DESC
            LIMIT 5";

  # if no errors...
  if( $result = $link->query($query) )
  {
?>
<table border="1" width="40%" cellpadding="4" cellspacing ="1">
  <tbody>
  <tr>
    <th width="10%">City</th>
    <th>Population</th>
  </tr>
<?
    # then display the results...
    while($row = $result->fetch_object())
      printf("<tr>\n  <td align=\"center\">%s</td><td>%d</td>\n</tr>\n",
              $row->Name, $row->Population);
?>
  </tbody
</table>
<?
  # ...and verify the number of rows that were retrieved
    printf("<p>Affected rows: %d</p>\n", $link->affected_rows);
  }
  else
    # otherwise, tell us what went wrong
    echo mysqli_error();

  # free the result set and the mysqli connection object
  $result->close();
  $link->close();
?>
</body>
</html>

我们假设在Web服务器上运行的进程可以到达SQL节点的IP地址。

以类似的方式,您可以使用MySQL C API、Perl-DBI、Python-mysql或MySQL连接器来执行数据定义和操作任务,就像您通常使用MySQL一样。

3.6、MySQL NDB集群的安全关闭和重启

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-shutdown-restart.html

3.6.1、关闭MySQL NDB集群

3.6.1.1、关闭前的集群状态

关闭前集群状态正常

在这里插入图片描述

192.168.2.183

在这里插入图片描述

192.168.2.184

在这里插入图片描述

192.168.2.185

在这里插入图片描述

3.6.1.2、关闭sql节点

在任何SQL节点使用mysqladmin shutdown终止。在所有sql节点上执行如下命令即可关闭sql节点。

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf  -p  shutdown

在所有sql节点主机上都要执行上述关闭命令。

3.6.1.2.1、关闭第一个sql节点

在这里插入图片描述

第一个sql节点的关闭日志看这里

cat /var/log/mysqld.log 
2025-09-12T10:19:31.790668Z 0 [Note] Giving 2 client threads a chance to die gracefully
2025-09-12T10:19:31.790690Z 0 [Note] Shutting down slave threads
2025-09-12T10:19:31.797977Z 2 [Note] NDB Binlog: Server shutdown detected...
2025-09-12T10:19:31.797996Z 2 [Note] NDB Binlog: Shutting down
2025-09-12T10:19:31.799630Z 2 [Note] NDB Binlog: Stopping...
2025-09-12T10:19:31.800947Z 0 [Note] NDB Binlog: Stopped
2025-09-12T10:19:32.084827Z 0 [Note] NDB Util: Stopped
2025-09-12T10:19:33.790892Z 0 [Note] Forcefully disconnecting 0 remaining clients
2025-09-12T10:19:33.790972Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2025-09-12T10:19:33.791439Z 0 [Note] Binlog end
2025-09-12T10:19:33.791467Z 0 [Note] NDB Binlog: Stop
2025-09-12T10:19:33.791483Z 0 [Note] NDB Binlog: Wakeup
2025-09-12T10:19:33.791484Z 0 [Note] NDB Binlog: Stop completed
2025-09-12T10:19:33.791726Z 0 [Note] Shutting down plugin 'ngram'
2025-09-12T10:19:33.791745Z 0 [Note] Shutting down plugin 'ndb_transid_mysql_connection_map'
2025-09-12T10:19:33.791748Z 0 [Note] Shutting down plugin 'ndbinfo'
2025-09-12T10:19:33.792002Z 0 [Note] Shutting down plugin 'ndbcluster'
2025-09-12T10:19:33.792018Z 0 [Note] NDB Index Stat: Stop
2025-09-12T10:19:33.792020Z 0 [Note] NDB Index Stat: Wakeup
2025-09-12T10:19:33.792041Z 0 [Note] NDB Index Stat: Stopping...
2025-09-12T10:19:33.792489Z 0 [Note] NDB Index Stat: Stopped
2025-09-12T10:19:33.792516Z 0 [Note] NDB Index Stat: Stop completed
2025-09-12T10:19:33.792523Z 0 [Note] NDB Util: Stop
2025-09-12T10:19:33.792525Z 0 [Note] NDB Util: Wakeup
2025-09-12T10:19:33.792527Z 0 [Note] NDB Util: Stop completed
2025-09-12T10:19:34.095050Z 0 [Note] Shutting down plugin 'ARCHIVE'
2025-09-12T10:19:34.095074Z 0 [Note] Shutting down plugin 'partition'
2025-09-12T10:19:34.095077Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2025-09-12T10:19:34.095080Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2025-09-12T10:19:34.095099Z 0 [Note] Shutting down plugin 'CSV'
2025-09-12T10:19:34.095101Z 0 [Note] Shutting down plugin 'MEMORY'
2025-09-12T10:19:34.095104Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2025-09-12T10:19:34.095119Z 0 [Note] Shutting down plugin 'MyISAM'
2025-09-12T10:19:34.095135Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2025-09-12T10:19:34.095138Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2025-09-12T10:19:34.095139Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2025-09-12T10:19:34.095140Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2025-09-12T10:19:34.095141Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2025-09-12T10:19:34.095142Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2025-09-12T10:19:34.095143Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2025-09-12T10:19:34.095144Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2025-09-12T10:19:34.095145Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2025-09-12T10:19:34.095146Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2025-09-12T10:19:34.095147Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2025-09-12T10:19:34.095148Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2025-09-12T10:19:34.095149Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2025-09-12T10:19:34.095150Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2025-09-12T10:19:34.095151Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2025-09-12T10:19:34.095152Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2025-09-12T10:19:34.095153Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2025-09-12T10:19:34.095154Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2025-09-12T10:19:34.095155Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2025-09-12T10:19:34.095156Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2025-09-12T10:19:34.095157Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2025-09-12T10:19:34.095158Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2025-09-12T10:19:34.095159Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2025-09-12T10:19:34.095160Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2025-09-12T10:19:34.095161Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2025-09-12T10:19:34.095162Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2025-09-12T10:19:34.095163Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2025-09-12T10:19:34.095164Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2025-09-12T10:19:34.095165Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2025-09-12T10:19:34.095166Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2025-09-12T10:19:34.095174Z 0 [Note] Shutting down plugin 'InnoDB'
2025-09-12T10:19:34.095370Z 0 [Note] InnoDB: FTS optimize thread exiting.
2025-09-12T10:19:34.095582Z 0 [Note] InnoDB: Starting shutdown...
2025-09-12T10:19:34.196365Z 0 [Note] InnoDB: Dumping buffer pool(s) to /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T10:19:34.199123Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 250912 18:19:34
2025-09-12T10:19:36.063293Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2634148
2025-09-12T10:19:36.064172Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2025-09-12T10:19:36.064179Z 0 [Note] Shutting down plugin 'sha256_password'
2025-09-12T10:19:36.064181Z 0 [Note] Shutting down plugin 'mysql_native_password'
2025-09-12T10:19:36.064317Z 0 [Note] Shutting down plugin 'binlog'
2025-09-12T10:19:36.064765Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

[root@centos mysql]# 

现在已经成功关闭了第一个sql节点,让我们看下现在的集群状态
在这里插入图片描述

3.6.1.2.2、关闭第二个sql节点

关闭第二个sql 节点

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf  -p  shutdown

在这里插入图片描述

第二个sql节点的关闭日志看这里

cat /var/log/mysqld.log 
2025-09-12T10:24:21.728911Z 0 [Note] Giving 2 client threads a chance to die gracefully
2025-09-12T10:24:21.728952Z 0 [Note] Shutting down slave threads
2025-09-12T10:24:21.737367Z 1 [Note] NDB Binlog: Server shutdown detected...
2025-09-12T10:24:21.737378Z 1 [Note] NDB Binlog: Shutting down
2025-09-12T10:24:21.739081Z 1 [Note] NDB Binlog: Stopping...
2025-09-12T10:24:21.744321Z 0 [Note] NDB Binlog: Stopped
2025-09-12T10:24:21.802125Z 0 [Note] NDB Util: Stopped
2025-09-12T10:24:23.729147Z 0 [Note] Forcefully disconnecting 0 remaining clients
2025-09-12T10:24:23.729222Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2025-09-12T10:24:23.729706Z 0 [Note] Binlog end
2025-09-12T10:24:23.729730Z 0 [Note] NDB Binlog: Stop
2025-09-12T10:24:23.729733Z 0 [Note] NDB Binlog: Wakeup
2025-09-12T10:24:23.729734Z 0 [Note] NDB Binlog: Stop completed
2025-09-12T10:24:23.729888Z 0 [Note] Shutting down plugin 'ngram'
2025-09-12T10:24:23.729907Z 0 [Note] Shutting down plugin 'ndb_transid_mysql_connection_map'
2025-09-12T10:24:23.729910Z 0 [Note] Shutting down plugin 'ndbinfo'
2025-09-12T10:24:23.730159Z 0 [Note] Shutting down plugin 'ndbcluster'
2025-09-12T10:24:23.730175Z 0 [Note] NDB Index Stat: Stop
2025-09-12T10:24:23.730177Z 0 [Note] NDB Index Stat: Wakeup
2025-09-12T10:24:23.730197Z 0 [Note] NDB Index Stat: Stopping...
2025-09-12T10:24:23.730854Z 0 [Note] NDB Index Stat: Stopped
2025-09-12T10:24:23.730876Z 0 [Note] NDB Index Stat: Stop completed
2025-09-12T10:24:23.730882Z 0 [Note] NDB Util: Stop
2025-09-12T10:24:23.730885Z 0 [Note] NDB Util: Wakeup
2025-09-12T10:24:23.730887Z 0 [Note] NDB Util: Stop completed
2025-09-12T10:24:24.310553Z 0 [Note] Shutting down plugin 'ARCHIVE'
2025-09-12T10:24:24.310573Z 0 [Note] Shutting down plugin 'partition'
2025-09-12T10:24:24.310576Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2025-09-12T10:24:24.310578Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2025-09-12T10:24:24.310592Z 0 [Note] Shutting down plugin 'CSV'
2025-09-12T10:24:24.310595Z 0 [Note] Shutting down plugin 'MEMORY'
2025-09-12T10:24:24.310597Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2025-09-12T10:24:24.310614Z 0 [Note] Shutting down plugin 'MyISAM'
2025-09-12T10:24:24.310624Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2025-09-12T10:24:24.310625Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2025-09-12T10:24:24.310627Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2025-09-12T10:24:24.310628Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2025-09-12T10:24:24.310680Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2025-09-12T10:24:24.310682Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2025-09-12T10:24:24.310684Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2025-09-12T10:24:24.310685Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2025-09-12T10:24:24.310686Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2025-09-12T10:24:24.310687Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2025-09-12T10:24:24.310689Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2025-09-12T10:24:24.310690Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2025-09-12T10:24:24.310691Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2025-09-12T10:24:24.310692Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2025-09-12T10:24:24.310693Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2025-09-12T10:24:24.310694Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2025-09-12T10:24:24.310695Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2025-09-12T10:24:24.310697Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2025-09-12T10:24:24.310698Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2025-09-12T10:24:24.310699Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2025-09-12T10:24:24.310700Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2025-09-12T10:24:24.310708Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2025-09-12T10:24:24.310709Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2025-09-12T10:24:24.310710Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2025-09-12T10:24:24.310711Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2025-09-12T10:24:24.310712Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2025-09-12T10:24:24.310713Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2025-09-12T10:24:24.310714Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2025-09-12T10:24:24.310715Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2025-09-12T10:24:24.310716Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2025-09-12T10:24:24.310717Z 0 [Note] Shutting down plugin 'InnoDB'
2025-09-12T10:24:24.310880Z 0 [Note] InnoDB: FTS optimize thread exiting.
2025-09-12T10:24:24.310960Z 0 [Note] InnoDB: Starting shutdown...
2025-09-12T10:24:24.411271Z 0 [Note] InnoDB: Dumping buffer pool(s) to /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T10:24:24.412288Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 250912 18:24:24
2025-09-12T10:24:26.164884Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2634148
2025-09-12T10:24:26.165765Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2025-09-12T10:24:26.165774Z 0 [Note] Shutting down plugin 'sha256_password'
2025-09-12T10:24:26.165776Z 0 [Note] Shutting down plugin 'mysql_native_password'
2025-09-12T10:24:26.165858Z 0 [Note] Shutting down plugin 'binlog'
2025-09-12T10:24:26.166290Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

现在已经成功关闭了第二个sql节点,让我们看下现在的集群状态

在这里插入图片描述

3.6.1.2.3、关闭第三个sql节点

关闭第二个sql 节点

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf  -p  shutdown

在这里插入图片描述

第三个sql节点的关闭日志看这里

cat /var/log/mysqld.log 
2025-09-12T10:29:42.042497Z 0 [Note] Giving 2 client threads a chance to die gracefully
2025-09-12T10:29:42.042526Z 0 [Note] Shutting down slave threads
2025-09-12T10:29:42.050600Z 1 [Note] NDB Binlog: Server shutdown detected...
2025-09-12T10:29:42.050622Z 1 [Note] NDB Binlog: Shutting down
2025-09-12T10:29:42.054183Z 1 [Note] NDB Binlog: Stopping...
2025-09-12T10:29:42.055481Z 0 [Note] NDB Binlog: Stopped
2025-09-12T10:29:42.662737Z 0 [Note] NDB Util: Stopped
2025-09-12T10:29:44.042973Z 0 [Note] Forcefully disconnecting 0 remaining clients
2025-09-12T10:29:44.043022Z 0 [Note] Event Scheduler: Purging the queue. 0 events
2025-09-12T10:29:44.043717Z 0 [Note] Binlog end
2025-09-12T10:29:44.043751Z 0 [Note] NDB Binlog: Stop
2025-09-12T10:29:44.043777Z 0 [Note] NDB Binlog: Wakeup
2025-09-12T10:29:44.043781Z 0 [Note] NDB Binlog: Stop completed
2025-09-12T10:29:44.044397Z 0 [Note] Shutting down plugin 'ngram'
2025-09-12T10:29:44.044411Z 0 [Note] Shutting down plugin 'ndb_transid_mysql_connection_map'
2025-09-12T10:29:44.044417Z 0 [Note] Shutting down plugin 'ndbinfo'
2025-09-12T10:29:44.044976Z 0 [Note] Shutting down plugin 'ndbcluster'
2025-09-12T10:29:44.045012Z 0 [Note] NDB Index Stat: Stop
2025-09-12T10:29:44.045018Z 0 [Note] NDB Index Stat: Wakeup
2025-09-12T10:29:44.045102Z 0 [Note] NDB Index Stat: Stopping...
2025-09-12T10:29:44.046349Z 0 [Note] NDB Index Stat: Stopped
2025-09-12T10:29:44.046425Z 0 [Note] NDB Index Stat: Stop completed
2025-09-12T10:29:44.046441Z 0 [Note] NDB Util: Stop
2025-09-12T10:29:44.046446Z 0 [Note] NDB Util: Wakeup
2025-09-12T10:29:44.046450Z 0 [Note] NDB Util: Stop completed
2025-09-12T10:29:44.485335Z 0 [Note] Shutting down plugin 'ARCHIVE'
2025-09-12T10:29:44.485443Z 0 [Note] Shutting down plugin 'partition'
2025-09-12T10:29:44.485446Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2025-09-12T10:29:44.485449Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2025-09-12T10:29:44.485477Z 0 [Note] Shutting down plugin 'CSV'
2025-09-12T10:29:44.485486Z 0 [Note] Shutting down plugin 'MEMORY'
2025-09-12T10:29:44.485489Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2025-09-12T10:29:44.485503Z 0 [Note] Shutting down plugin 'MyISAM'
2025-09-12T10:29:44.485511Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2025-09-12T10:29:44.485513Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2025-09-12T10:29:44.485515Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2025-09-12T10:29:44.485516Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2025-09-12T10:29:44.485517Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2025-09-12T10:29:44.485518Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2025-09-12T10:29:44.485519Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2025-09-12T10:29:44.485520Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2025-09-12T10:29:44.485522Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2025-09-12T10:29:44.485523Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2025-09-12T10:29:44.485524Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2025-09-12T10:29:44.485525Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2025-09-12T10:29:44.485526Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2025-09-12T10:29:44.485527Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2025-09-12T10:29:44.485528Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2025-09-12T10:29:44.485529Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2025-09-12T10:29:44.485531Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2025-09-12T10:29:44.485532Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2025-09-12T10:29:44.485533Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2025-09-12T10:29:44.485534Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2025-09-12T10:29:44.485535Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2025-09-12T10:29:44.485536Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2025-09-12T10:29:44.485545Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2025-09-12T10:29:44.485546Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2025-09-12T10:29:44.485547Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2025-09-12T10:29:44.485548Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2025-09-12T10:29:44.485549Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2025-09-12T10:29:44.485550Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2025-09-12T10:29:44.485551Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2025-09-12T10:29:44.485552Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2025-09-12T10:29:44.485554Z 0 [Note] Shutting down plugin 'InnoDB'
2025-09-12T10:29:44.485637Z 0 [Note] InnoDB: FTS optimize thread exiting.
2025-09-12T10:29:44.485810Z 0 [Note] InnoDB: Starting shutdown...
2025-09-12T10:29:44.586066Z 0 [Note] InnoDB: Dumping buffer pool(s) to /usr/local/mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64/data/ib_buffer_pool
2025-09-12T10:29:44.586642Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 250912 18:29:44
2025-09-12T10:29:46.433928Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2634148
2025-09-12T10:29:46.434822Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2025-09-12T10:29:46.434831Z 0 [Note] Shutting down plugin 'sha256_password'
2025-09-12T10:29:46.434833Z 0 [Note] Shutting down plugin 'mysql_native_password'
2025-09-12T10:29:46.434991Z 0 [Note] Shutting down plugin 'binlog'
2025-09-12T10:29:46.435416Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

[root@centos mysql]# 

现在已经成功关闭了第二个sql节点,让我们看下现在的集群状态

在这里插入图片描述

3.6.1.3、关闭数据节点和管理节点

要关闭集群数据节点和管理节点,请在管理节点的计算机上的shell中输入以下命令:

ndb_mgm -e shutdown

这里的-e选项用于从shell向ndb_mgm客户端传递命令。该命令会导致ndb_mgm、ndb_mgmd以及任何ndbd或ndbmtd进程正常终止。

任意选择一个管理节点执行此命令即可。

关闭数据节点和管理节点之前,看下集群状态

在这里插入图片描述

192.168.2.183

在这里插入图片描述

192.168.2.184

在这里插入图片描述

192.168.2.185

在这里插入图片描述

在192.168.2.185执行的ndb_mgm -e shutdown
在这里插入图片描述

192.168.2.184

在这里插入图片描述

192.168.2.183

在这里插入图片描述

如上所示,在所有的数据节点和管理节点上查看任何的ndbd、ndb_mgmd 已经全部关闭了。

关闭后查看集群状态 如下 证明已经把集群安全关闭掉了。

在这里插入图片描述

查看关闭集群中所有管理节点和数据节点的过程如下:

在第一个管理节点上执行关闭命令:ndb_mgm -e shutdown

(188对应183)

在这里插入图片描述

在另外的管理节点上看到所有3个管理节点和所有3个数据节点的关闭过程如下

(188对应183,189对应184,190对应185)

在这里插入图片描述

3.6.2、重启MySQL NDB集群

先关闭MySQL NDB集群 (3.6.1章节),再开启MySQL NDB集群 (3.4章节)。

3.6.3、生产环境的ndb集群重启的一般方法

在生产环境中,通常不希望完全关闭群集。在许多情况下,即使在进行配置更改或执行对集群硬件或软件(或两者)的升级时(这需要关闭各个主机机器),也可以通过执行集群的滚动重启来这样做而不关闭整个集群。有关执行此操作的更多信息,请参见链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-rolling-restart.html

3.7、升级和降级MySQL NDB集群

3.7.1、升级和降级NDB 7.5

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-upgrade-downgrade-7-5.html

3.7.2、升级和降级NDB 7.6

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-upgrade-downgrade-7-6.html

3.8、MySQL NDB cluster 增删改查操作

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-example-data.html

在NDB集群中使用数据库表和数据与在标准MySQL中使用数据库表和数据没有太大区别。有两个关键点需要牢记:

对于要在集群中复制的表,它必须使用NDBCLUSTER存储引擎。若要指定此选项,请在创建表时使用ENGINE=NDBCLUSTER或ENGINE=NDB选项:

CREATE TABLE tbl_name (col_name column_definitions) ENGINE=NDBCLUSTER;

或者,对于使用不同存储引擎的现有表,使用ALTER TABLE将表更改为使用NDBCLUSTER:

ALTER TABLE tbl_name ENGINE=NDBCLUSTER;

如果您使用mysqldump的输出从现有数据库导入表,则可以在文本编辑器中打开SQL脚本,并将ENGINE选项添加到任何表创建语句中,或替换任何现有ENGINE选项。

在SQL节点上运行SELECT查询与在MySQL服务器的任何其他实例上运行它们没有什么不同。要从命令行运行查询,首先需要以常规方式登录MySQL Monitor(在Enter password:提示符下指定root密码):

[root@centos mysql-cluster]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.29-ndb-7.5.17-cluster-gpl MySQL Cluster Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

值得注意的是,集群节点在相互访问时不使用MySQL特权系统。设置或更改MySQL用户帐户(包括根帐户)只会影响访问SQL节点的应用程序,而不会影响节点之间的交互。有关更多信息,请参见21.6.18.2部分“NDB群集和MySQL权限”。

使用MySQL的应用程序可以使用标准API来访问NDB表。重要的是要记住,您的应用程序必须访问SQL节点,而不是管理或数据节点。这个简短的例子展示了我们如何通过使用PHP 5.X mysqli扩展来执行SELECT语句,该扩展运行在网络上其他地方的Web服务器上:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type"
           content="text/html; charset=iso-8859-1">
  <title>SIMPLE mysqli SELECT</title>
</head>
<body>
<?php
  # connect to SQL node:
  $link = new mysqli('198.51.100.20', 'root', 'root_password', 'world');
  # parameters for mysqli constructor are:
  #   host, user, password, database

  if( mysqli_connect_errno() )
    die("Connect failed: " . mysqli_connect_error());

  $query = "SELECT Name, Population
            FROM City
            ORDER BY Population DESC
            LIMIT 5";

  # if no errors...
  if( $result = $link->query($query) )
  {
?>
<table border="1" width="40%" cellpadding="4" cellspacing ="1">
  <tbody>
  <tr>
    <th width="10%">City</th>
    <th>Population</th>
  </tr>
<?
    # then display the results...
    while($row = $result->fetch_object())
      printf("<tr>\n  <td align=\"center\">%s</td><td>%d</td>\n</tr>\n",
              $row->Name, $row->Population);
?>
  </tbody
</table>
<?
  # ...and verify the number of rows that were retrieved
    printf("<p>Affected rows: %d</p>\n", $link->affected_rows);
  }
  else
    # otherwise, tell us what went wrong
    echo mysqli_error();

  # free the result set and the mysqli connection object
  $result->close();
  $link->close();
?>
</body>
</html>

我们假设在Web服务器上运行的进程可以到达SQL节点的IP地址。

以类似的方式,您可以使用MySQL C API、Perl-DBI、Python-mysql或MySQL连接器来执行数据定义和操作任务,就像您通常使用MySQL一样。

3.8.1、create操作,创建数据库创建表插入数据

创建数据库
在 SQL 节点上创建数据库
– 连接到 SQL 节点
mysql -h 192.168.2.183 -u root -p

创建test数据库【在 MySQL NDB Cluster 中创建数据库时,不需要在创建数据库时指定ndb存储引擎。存储引擎是在创建表时指定的。】

CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;

创建users表

CREATE TABLE users (
    name VARCHAR(255) NOT NULL PRIMARY KEY,
    sex VARCHAR(10) NULL,
    description TEXT NULL
) ENGINE=NDBCLUSTER;

在这里插入图片描述

向users表中插入数据

INSERT INTO users (name, sex, description) 
VALUES ('张三', '男', '这是一条用户描述信息');
INSERT INTO users (name, sex, description) VALUES ('李四', '男', '这是一条用户描述信息');

在这里插入图片描述

3.8.2、delete操作

在 MySQL NDB Cluster中删除操作与标准 MySQL 操作类似,以下是详细的删除方法:

删除users表中的一条数据

delete from users where name='张三';

删除users表

drop table IF EXISTS users;

在这里插入图片描述

删除test数据库
在 MySQL NDB Cluster 中删除数据库需要特别注意,因为这会永久删除数据库中的所有表和数据。

drop database IF EXISTS test;

在这里插入图片描述

3.8.3、update操作

在 MySQL NDB Cluster 中更新数据表与标准 MySQL 操作类似,以下是详细的更新方法:

更新users表中的一条数据

update users set description='张三的描述信息' where name='张三';

在这里插入图片描述

3.8.4、select操作

查询users表数据

select * from users;

在这里插入图片描述

4、配置MySQL ndb cluster

链接: http://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-configuration.html

4.1、快速测试NDB集群的设置

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-quick.html

4.2、NDB集群配置参数、选项和变量概述

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-configuration-overview.html

4.2.1、NDB集群数据节点配置参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-params-ndbd.html

4.2.2、NDB集群管理节点配置参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-params-mgmd.html

4.2.3、NDB集群SQL Node和API Node配置参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-params-api.html

4.2.4、其他NDB集群配置参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-params-other.html

4.2.5、NDB集群mysqld选项和变量参考

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-option-tables.html

4.3、NDB集群配置文件设置

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-config-file.html

4.3.1 NDB集群配置:基本示例

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-config-example.html

4.3.2 NDB集群推荐启动配置

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-config-starting.html

4.3.3 NDB集群连接字符串

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-connection-strings.html

4.3.4在NDB集群中定义计算机

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-computer-definition.html

4.3.5定义NDB集群管理服务器

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-mgm-definition.html

4.3.6定义NDB集群数据节点

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-ndbd-definition.html

4.3.7在NDB集群中定义SQL和其他API节点

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-api-definition.html

4.3.8系统定义

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-system-definition.html

4.3.9 NDB集群的MySQL服务器选项和变量

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-system-definition.html

4.3.10 NDB集群TCP/IP连接

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-tcp-definition.html

4.3.11使用直接连接的NDB集群TCP/IP连接

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-tcp-definition-direct.html

4.3.12 NDB集群共享内存连接

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-shm-definition.html

4.3.13配置NDB集群发送缓冲区参数

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-config-send-buffers.html

4.4、使用NDB集群的高速互连

链接: https://dev.mysql.com/doc/mysql-cluster-excerpt/5.7/en/mysql-cluster-interconnects.html

5、MySQL ndb cluster 集群各种可执行二进制程序概述

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-programs.html

5.1ndbd -NDB集群数据节点守护程序

5.2 ndbinfo_select_all -从ndbinfo表中选择

5.3 ndbmtd -NDB集群数据节点守护程序(多线程)

5.4 ndb_mgmd -NDB群集管理服务器守护程序

5.5 ndb_mgm -NDB集群管理客户端

5.6 ndb_blob_tool -检查和修复NDB集群表的BLOB和TEXT列

5.7 ndb_config -提取NDB群集配置信息

5.8 ndb_cpcd -NDB开发的自动化测试

5.9 ndb_delete_all -从NDB表中删除所有磁盘

5.10 ndb_desc -描述NDB表

5.11 ndb_drop_index -从NDB表中删除索引

5.12 ndb_drop_table -删除NDB表

5.13 ndb_error_reporter - NDB错误报告实用程序

5.14 ndb_import -将CSV数据导入NDB

5.15 ndb_index_stat - NDB索引统计实用程序

5.16 ndb_move_data - NDB数据复制实用程序

5.17 ndb_perror -获取NDB错误消息信息

5.18 ndb_print_backup_file -打印NDB备份文件内容

5.19 ndb_print_file -打印NDB磁盘数据文件内容

5.20 ndb_print_frag_file -打印NDB片段列表文件内容

5.21 ndb_print_schema_file -打印NDB架构文件内容

5.22 ndb_print_sys_file -打印NDB系统文件内容

5.23 ndb_redo_log_reader -检查并打印群集重做日志的内容

5.24 ndb_restore -恢复NDB群集备份

5.25 ndb_select_all -从NDB表中打印数据

5.26 ndb_select_count -打印NDB表的行计数

5.27 ndb_show_tables -显示NDB表列表

5.28 ndb_size.pl - NDBCLUSTER大小要求估计

5.29 ndb_top -查看NDB线程的CPU使用信息

5.30 ndb_waiter -等待NDB集群达到给定状态

6、NDB集群管理

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-management.html

6.1 NDB集群管理客户端中的命令

6.2 NDB群集日志消息

6.3 NDB集群中生成的事件报告

6.4 NDB集群启动阶段总结

6.5执行NDB集群的滚动重启

6.6 NDB集群单用户模式

6.7在线添加NDB集群数据节点

6.8 NDB集群在线备份

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup.html

接下来的几节将介绍如何使用ndb_mgm管理客户端中的功能准备并创建NDB群集备份。为了将这种类型的备份与使用mysqldump进行的备份区分开来,我们有时将其称为“本机”NDB集群备份。(For有关使用mysqldump创建备份的信息,请参见第4.5.4节“mysqldump -数据库备份程序”。NDB群集备份的恢复使用NDB群集分发版提供的ndb_restore实用程序完成;有关ndb_restore及其在恢复NDB群集备份中的使用的信息,请参见第21.5.24节“ndb_restore -恢复NDB群集备份”。

6.8.1、NDB集群备份概念

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-concepts.html

备份是数据库在给定时间的快照。备份由三个主要部分组成:
元数据. 所有数据库表的名称和定义
表记录。 备份时实际存储在数据库表中的数据
事务日志。 一种顺序记录,说明数据如何以及何时存储在数据库中

这些部分中的每一个都保存在参与备份的所有节点上。在备份过程中,每个节点将这三个部分保存到磁盘上的三个文件中:
BACKUP-backup_id.node_id.ctl
包含控制信息和元数据的控制文件。每个节点将相同的表定义(对于集群中的所有表)保存到该文件的自己的版本中。

BACKUP-backup_id-0.node_id.data
包含表记录的数据文件,这些记录以每个片段为基础保存。也就是说,不同的节点在备份期间保存不同的片段。每个节点保存的文件以一个标头开始,标头说明记录所属的表。在记录列表之后有一个页脚,其中包含所有记录的校验和。

BACKUP-backup_id.node_id.log
包含已提交事务记录的日志文件。只有存储在备份中的表上的事务才存储在日志中。参与备份的节点保存不同的记录,因为不同的节点托管不同的数据库片段。

在刚刚显示的清单中,backup_id代表备份标识符,node_id是创建文件的节点的唯一标识符。

备份文件的位置由BackupDataDir参数确定。默认的BackupDataDir是/DataDir/BACKUP 。
DataDir在数据节点主机上的/etc/my.cnf可以找到。

在这里插入图片描述

没有执行过备份的mysql ndb cluster集群是没有这个/usr/local/mysql/data/BACKUP目录的。

在这里插入图片描述

6.8.2、备份前准备

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-configuration.html

先说结论:NDB 7.5.0的不用我们自己做特别设置,默认已经满足了。可直接进行6.8.3:备份操作。

和备份有关的参数如下

这些参数需要满足的关系是:指定这些参数时,以下关系必须成立。否则,数据节点无法启动。

BackupDataBufferSize >= BackupWriteSize + 188KB

BackupLogBufferSize >= BackupWriteSize + 16KB

BackupMaxWriteSize >= BackupWriteSiz

1、BackupDataBufferSize-备份数据缓冲区大小
在数据写入磁盘之前用于缓冲数据的内存量。

在这里插入图片描述

在创建备份时,有两个缓冲区用于将数据发送到磁盘。备份数据缓冲区用于填充通过扫描节点的表而记录的数据。一旦此缓冲区被填充到指定为BackupWriteSize的级别,页面将被发送到磁盘。在将数据刷新到磁盘时,备份过程可以继续填充此缓冲区,直到空间耗尽。发生这种情况时,备份进程会暂停扫描,并等待某些磁盘写入操作完成释放内存,以便扫描可以继续。

此参数的默认值为16MB。

2、BackupLogBufferSize-备份日志缓冲区大小
在日志记录写入磁盘之前用于缓冲日志记录的内存量。

在这里插入图片描述

备份日志缓冲区完成与备份数据缓冲区所扮演的角色类似的角色,不同之处在于它用于生成在备份执行期间进行的所有表写入的日志。写入这些页的原则与写入备份数据缓冲区的原则相同,只是当备份日志缓冲区中没有更多空间时,备份将失败。因此,备份日志缓冲区的大小必须足够大,以便在进行备份时处理写入活动引起的负载。

此参数的默认值对于大多数应用程序应该足够了。事实上,磁盘写入速度不足更有可能导致备份失败,而不是备份日志缓冲区变满。如果磁盘子系统未针对应用程序引起的写入负载进行配置,则群集不太可能能够执行所需的操作。

最好以处理器而不是磁盘或网络连接成为瓶颈的方式配置群集节点。

此参数的默认值为16MB。

3、BackupMemory-备份内存
此参数在NDB 7.4已经启用了,大于NDB 7.4的NDB 版本不用考虑此参数。本文章是NDB 7.5.17,不用考虑此参数。

在数据节点中为备份分配的总内存。这应该是为备份数据缓冲区和备份日志缓冲区分配的内存之和。

在这里插入图片描述

此参数已弃用,并将在NDB Cluster的未来版本中删除。任何为它所做的设置都将被忽略。

4、BackupWriteSize-备份写入大小
写入磁盘的块的默认大小。这适用于备份数据缓冲区和备份日志缓冲区。
在这里插入图片描述

此参数指定由备份日志和备份数据缓冲区写入磁盘的信息的默认大小。

此参数的默认值为256KB。

5、BackupMaxWriteSize-备份最大写入大小
写入磁盘的最大块大小。这适用于备份数据缓冲区和备份日志缓冲区。

在这里插入图片描述

此参数指定备份日志和备份数据缓冲区写入磁盘的最大邮件大小。

此参数的默认值为1MB。

6、CompressedBackup-压缩备份
CompressedBackup使NDB在创建和写入备份文件时使用压缩。

在这里插入图片描述

默认值为0(禁用)。

无法将压缩备份还原到运行不支持此功能的MySQL版本的群集。

启用此参数将导致压缩备份文件。使用的压缩相当于gzip --fast,可以节省数据节点上存储未压缩备份文件所需的50%或更多空间。可以为单个数据节点或所有数据节点启用压缩备份(通过在/var/lib/mysql-cluster/config.ini 文件的[ndbd default]部分中设置此参数)。

6.8.3、备份

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-using-management-client.html

6.8.3.1、使用START BACKUP命令创建备份

使用START BACKUP命令创建备份
登录管理节点,执行如下命令即可备份集群:

[root@centos mysql]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> START BACKUP

为了跟踪备份过程,备份前在数据节点查看查看备份目录

183数据节点上查看备份目录

在这里插入图片描述

184数据节点上查看备份目录

在这里插入图片描述

185数据节点上查看备份目录

在这里插入图片描述

此集群的数据如下

在这里插入图片描述

然后在184管理节点执行备份命令(可以在任意节点执行备份命令)

ndb_mgm> START BACKUP
Connected to Management Server at: 192.168.2.183:1186
Waiting for completed, this may take several minutes
Node 11: Backup 1 started from node 1
ndb_mgm> Node 11: Backup 1 started from node 1 completed
 StartGCP: 19377 StopGCP: 19380
 #Records: 2061 #LogRecords: 0
 Data: 52200 bytes Log: 0 bytes

备份需要的时间取决于mysql ndb cluster集群的数据量。我这个集群和自由1个表其中有2条数据,在3秒之内就备份完了。当输出Node 11: Backup 1 started from node 1 completed,completed表示备份完成了。

在这里插入图片描述

备份完之后再查看3台数据节点的备份数据目录已经有备份文件了。

183数据节点上查看备份目录

在这里插入图片描述

184数据节点上查看备份目录

在这里插入图片描述

185数据节点上查看备份目录

在这里插入图片描述

注意每个数据节点的Data备份文件MD5SUM不同是正常的,因为不同的数据节点上存储的数据库数据完全不同。

数据节点的备份日志如下 /var/lib/mysql-cluster/ 目录下的*cluster文件
183数据节点的备份日志如下

2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

在这里插入图片描述

184数据节点的备份日志如下

2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

185数据节点的备份日志如下

2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

以下是命令解释可不看

使用START BACKUP命令创建备份:

START BACKUP [backup_id] [wait_option] [snapshot_option]

wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT

snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND

命令参数解释
1、backup_id
连续的备份会自动按顺序标识,因此backup_id(大于或等于1的整数)是可选的;如果省略它,则使用下一个可用值。如果使用已经存在的backup_id值,备份将失败,并显示错误Backup failed:file already exists。如果使用了backup_id这个命令参数,则必须在使用任何其他命令参数之前,紧跟在START BACKUP命令之后使用。

2、wait_option

wait_option这个命令参数可用于确定在发出START BACKUP 命令后,控制权何时返回给管理客户端,如下所述:

默认是等待备份命令完成才把控制权何时返回给管理客户端。

此参数的可选值是:[NOWAIT | WAIT STARTED | WAIT COMPLETED]

wait_option如果指定为NOWAIT,管理客户端将立即显示提示,如下所示:

ndb_mgm> START BACKUP NOWAIT
ndb_mgm>

在这种情况下,管理客户端甚至可以在打印备份过程的进度信息时使用。

wait_option如果指定为WAIT STARTED时,管理客户端将等待备份开始,然后将控制权返回给用户,如下所示:

ndb_mgm> START BACKUP WAIT STARTED
Waiting for started, this may take several minutes
Node 2: Backup 3 started from node 1
ndb_mgm>

wait_option如果指定为WAIT COMPLETED,管理客户端等待备份过程完成,然后再将控制权返回给用户。

3、snapshot_option
此参数的可选值是:[SNAPSHOTSTART | SNAPSHOTEND]

snapshot_option可用于确定备份是否与发出START BACKUP 时或完成时群集的状态匹配。SNAPSHOTSTART使备份与备份开始时群集的状态匹配; SNAPSHOTEND使备份反映备份完成时群集的状态。SNAPSHOTEND是默认值,与以前的NDB Cluster版本中的行为相匹配。

START BACKUP 命令解释

在这里插入图片描述

6.8.3.2、使用 ndb_restore 验证备份

在每个数据节点上执行此命令

-b 1 表示 backup_id=1
–backup_path 指定备份文件路径

在183数据节点上执行此命令 (183数据节点的nodeid=11)

ndb_restore -c 192.168.2.183 -b 1 --print  --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

在184数据节点上执行此命令 (184数据节点的nodeid=12)

ndb_restore -c 192.168.2.183 -b 1 --print  --nodeid=12 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

在185数据节点上执行此命令 (185数据节点的nodeid=13)

ndb_restore -c 192.168.2.185 -b 1 --print  --nodeid=13 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

6.8.4、NDB集群备份故障排除

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup-troubleshooting.html

6.9、备份恢复-MySQL ndb 集群

本节是把183、184、185集群的备份文件 恢复到 188、189、190集群中。

链接: https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-importing-data.html

6.9.1、跨集群备份恢复-MySQL ndb 集群

6.9.1.1、恢复前准备

在数据库文件损坏时,通常需要从现有的NDB集群的备份文件导入备份进行备份恢复。
或者新建一个mysql ndb cluster集群,进行备份恢复。

本节是把183、184、185集群的备份文件 恢复到 188、189、190集群中。

在188、189、190集群的数据节点上创建备份目录:
BACKUP-1是因为备份文件的编号是1。

mkdir /usr/local/mysql/data/BACKUP/BACKUP-1

如果备份文件的编号是2那就在 188、189、190集群的数据节点上创建备份目录:

mkdir /usr/local/mysql/data/BACKUP/BACKUP-2

先把183、184、185mysql ndb cluster集群备份文件上传到需要恢复数据的188、189、190集群数据节点的 /usr/local/mysql/data/BACKUP/BACKUP-1目录下,如下。

第一个数据节点188

在这里插入图片描述

第二个数据节点189

在这里插入图片描述

第三个数据节点190

在这里插入图片描述

然后关闭集群所有节点,再启动集群所有节点,注意启动数据节点时需要ndbd --initial,因为备份恢复前需要清理环境 清理环境的命令就是 ndbd --initial ,ndbd --initial 会删除所有用户自定义数据库的表数据,但不会删除数据库名。 ndbd --initial会删除并重新创建数据节点上的所有数据文件、日志文件和元数据文件,然后根据管理节点的配置进行全新的初始化。这将导致该数据节点上的所有数据被清除。

当您执行 ndbd --initial 时,数据节点进程会进行以下操作:

清除现有文件:节点会删除其 DataDir 配置中指定的目录下的所有 NDB 核心文件。这包括:

ndb_ 开头的数据文件(存储实际表数据)

*.log 日志文件(重做日志、undo日志等)

检查点文件

节点元数据文件

从管理节点获取全新配置:节点会联系管理节点,获取集群的完整配置信息。

创建新的文件系统:基于获取到的配置,节点会在 DataDir 中创建一个全新的、空的文件系统结构。这相当于为这个节点“格式化硬盘”。

启动并加入集群:节点以空的状态启动,并尝试加入集群。

先关闭集群所有sql节点

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf  -p  shutdown

再关闭所有管理节点和数据节点

ndb_mgm -e shutdown

然后启动集群,先启动所有管理节点

ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini

再启动所有数据节点

ndbd --initial

执行ndbd --initial 前,有一个自定义的test数据库。

188数据节点

在这里插入图片描述

188 sql节点
有一个test数据库,test数据库有一个users数据表,users数据表有2条数据。

在这里插入图片描述

189数据节点

在这里插入图片描述

189 sql节点
有一个test数据库,test数据库有一个users数据表,users数据表有2条数据。

在这里插入图片描述

190数据节点

在这里插入图片描述

190 sql节点
有一个test数据库,test数据库有一个users数据表,users数据表有2条数据。

在这里插入图片描述

执行ndbd --initial 后,有一个自定义的test数据库 但是数据库中的数据已经被删除了 只有一个空的test数据库。

188数据节点
ndb_11_fs 小了1M,执行ndbd --initial 前是36M,执行ndbd --initial 后是35M。因为删除test表的数据了,会影响ndb_11_fs的大小。

在这里插入图片描述

188 sql节点
有一个test数据库, 但是数据库中的数据已经被删除了 只有一个空的test数据库。

在这里插入图片描述

189数据节点
ndb_12_fs 小了1M,执行ndbd --initial 前是36M,执行ndbd --initial 后是35M。因为删除test表的数据了,会影响ndb_11_fs的大小。

在这里插入图片描述

189 sql节点
有一个test数据库, 但是数据库中的数据已经被删除了 只有一个空的test数据库。

在这里插入图片描述

190数据节点
ndb_13_fs 小了1M,执行ndbd --initial 前是36M,执行ndbd --initial 后是35M。因为删除test表的数据了,会影响ndb_11_fs的大小。

在这里插入图片描述

190 sql节点
有一个test数据库, 但是数据库中的数据已经被删除了 只有一个空的test数据库。

在这里插入图片描述

最后启动所有sql节点

cd /usr/local/mysql
bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &
6.9.1.2、恢复数据库

备份文件中包含有一个名为test的数据库,test数据库里面有一个名为users的表,users表中有2条数据。

恢复备份前查看数据库是没有test数据库的

在这里插入图片描述

6.9.1.2.1、验证备份文件

在188数据节点上执行此命令 (188数据节点的nodeid=11)

ndb_restore -c 192.168.2.188 -b 1 --print  --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

输出如下

[root@centos BACKUP-1]# ndb_restore -c 192.168.2.188 -b 1 --print  --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/
2025-09-18 19:14:27 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-18 19:14:27 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-18 19:14:27 [restore_metadata] Get number of Tables
2025-09-18 19:14:27 [restore_metadata] Validate Footer
2025-09-18 19:14:27 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-18 19:14:27 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-18 19:14:27 [restore_metadata] Save foreign key info
2025-09-18 19:14:27 [restore_data] Start restoring table data
[root@centos BACKUP-1]# 

在189数据节点上执行此命令 (189数据节点的nodeid=12)

ndb_restore -c 192.168.2.189 -b 1 --print  --nodeid=12 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

输出如下

[root@centos BACKUP-1]#  ndb_restore -c 192.168.2.188 -b 1 --print  --nodeid=12 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/
Backup Id = 1
Nodeid = 12
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/
2025-09-18 19:13:12 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.12.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-18 19:13:12 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-18 19:13:12 [restore_metadata] Get number of Tables
2025-09-18 19:13:12 [restore_metadata] Validate Footer
2025-09-18 19:13:12 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-18 19:13:12 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-18 19:13:12 [restore_metadata] Save foreign key info
2025-09-18 19:13:12 [restore_data] Start restoring table data
[root@centos BACKUP-1]# 

在190数据节点上执行此命令 (190数据节点的nodeid=13)

ndb_restore -c 192.168.2.190 -b 1 --print  --nodeid=13 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/

输出如下

[root@centos BACKUP-1]#  ndb_restore -c 192.168.2.188 -b 1 --print  --nodeid=13 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1/
Backup Id = 1
Nodeid = 13
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1/
2025-09-18 19:13:22 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.13.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-18 19:13:22 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-18 19:13:22 [restore_metadata] Get number of Tables
2025-09-18 19:13:22 [restore_metadata] Validate Footer
2025-09-18 19:13:22 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-18 19:13:22 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-18 19:13:22 [restore_metadata] Save foreign key info
2025-09-18 19:13:22 [restore_data] Start restoring table data
[root@centos BACKUP-1]# 
6.9.1.2.2、创建空数据库

先删除已有的test数据库

drop database IF EXISTS test;

恢复的时候如果集群没有要恢复的数据库,需要提前创建一个空的同名数据库,但不用建表,ndb_restore程序会自动导入备份文件中的数据,但是不会自动建立数据库,所以需要在恢复前手动建立空的同名数据库。

CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
6.9.1.2.3、导入备份文件

元数据恢复(一次,在任意一个数据节点上进行1次即可),元数据恢复会做些什么呢?元数据恢复会建立表,但不会导入表数据。

188数据节点

ndb_restore -c 192.168.2.188 -b 1 -m --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1

输出如下

[root@centos mysql]# ndb_restore -c 192.168.2.188 -b 1 -m --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1
2025-09-22 17:45:15 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-22 17:45:15 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-22 17:45:15 [restore_metadata] Get number of Tables
2025-09-22 17:45:15 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-22 17:45:16 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-22 17:45:16 [restore_metadata] Restoring tables
Successfully restored table `test/def/users`
Successfully restored table event REPL$test/users
2025-09-22 17:45:16 [restore_metadata] Save foreign key info
Successfully created index `PRIMARY` on `users`
Create foreign keys
Create foreign keys done
2025-09-22 17:45:16 [restore_data] Start restoring table data
[root@centos mysql]# 

在这里插入图片描述

元数据恢复会做些什么呢?元数据恢复会建立表,但不会导入表数据。

在这里插入图片描述

数据和日志恢复(在所有数据节点上都要执行1次)

188数据节点

ndb_restore -c 192.168.2.188 -b 1 -r --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1

输出如下

[root@centos mysql]# ndb_restore -c 192.168.2.188 -b 1 -r --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1
2025-09-22 17:48:35 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-22 17:48:35 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-22 17:48:35 [restore_metadata] Get number of Tables
2025-09-22 17:48:35 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-22 17:48:36 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-22 17:48:36 [restore_metadata] Restoring tables
2025-09-22 17:48:36 [restore_metadata] Save foreign key info
2025-09-22 17:48:36 [restore_data] Start restoring table data
2025-09-22 17:48:36 [restore_data] Read data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1-0.11.Data'
File size 17944 bytes
2025-09-22 17:48:36 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 0
_____________________________________________________
Processing data in table: test/def/users(10) fragment 0
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 0
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 0
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 0
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 0
2025-09-22 17:48:36 [restore_log] Read log file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.11.log'
File size 52 bytes
2025-09-22 17:48:36 [restore_log] Restore log entries
Restored 0 tuples and 0 log entries
[root@centos mysql]# 

在这里插入图片描述

在第一个数据节点188进行数据和日志恢复后,查看users表还是没有数据。这没关系,说明user表数据存储在另外2个数据节点上,继续进行另外2个数据节点的数据和日志恢复即可。

在这里插入图片描述

189数据节点

ndb_restore -c 192.168.2.189 -b 1 -r --nodeid=12 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1

输入如下

[root@centos mysql]# ndb_restore -c 192.168.2.189 -b 1 -r --nodeid=12 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 12
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1
2025-09-22 17:54:10 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.12.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-22 17:54:10 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-22 17:54:10 [restore_metadata] Get number of Tables
2025-09-22 17:54:10 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-22 17:54:11 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-22 17:54:11 [restore_metadata] Restoring tables
2025-09-22 17:54:11 [restore_metadata] Save foreign key info
2025-09-22 17:54:11 [restore_data] Start restoring table data
2025-09-22 17:54:11 [restore_data] Read data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1-0.12.Data'
File size 18292 bytes
2025-09-22 17:54:11 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 1
_____________________________________________________
Processing data in table: test/def/users(10) fragment 1
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 1
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 1
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 1
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 1
2025-09-22 17:54:11 [restore_log] Read log file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.12.log'
File size 52 bytes
2025-09-22 17:54:11 [restore_log] Restore log entries
Restored 1 tuples and 0 log entries
[root@centos mysql]# 

在这里插入图片描述

在第二个数据节点189进行数据和日志恢复后,查看users表发现只恢复了1条数据,总共有2条数据。这没关系,说明user表另外一条数据存储在第3个数据节点上,继续进行第3个数据节点的数据和日志恢复即可。这也说明了为什么要在所有的数据节点上执行数据和日志恢复。

在这里插入图片描述

190数据节点

ndb_restore -c 192.168.2.190 -b 1 -r --nodeid=13 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
[root@centos ~]# ndb_restore -c 192.168.2.190 -b 1 -r --nodeid=13 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 13
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1
2025-09-22 17:58:03 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.13.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-22 17:58:03 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-22 17:58:03 [restore_metadata] Get number of Tables
2025-09-22 17:58:03 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-22 17:58:04 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-22 17:58:04 [restore_metadata] Restoring tables
2025-09-22 17:58:04 [restore_metadata] Save foreign key info
2025-09-22 17:58:04 [restore_data] Start restoring table data
2025-09-22 17:58:04 [restore_data] Read data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1-0.13.Data'
File size 16864 bytes
2025-09-22 17:58:04 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 2
_____________________________________________________
Processing data in table: test/def/users(10) fragment 2
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 2
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 2
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 2
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 2
2025-09-22 17:58:04 [restore_log] Read log file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.13.log'
File size 52 bytes
2025-09-22 17:58:04 [restore_log] Restore log entries
Restored 1 tuples and 0 log entries
[root@centos ~]# 

在这里插入图片描述

在最后一个也就是第三个数据节点190进行数据和日志恢复后,查看users表发现恢复了全部2条数据,user表总共有2条数据。 这也说明了为什么要在所有的数据节点上执行数据和日志恢复。

在这里插入图片描述

6.9.2、把三个服务器的 MySQL ndb 集群 压缩成1个服务器的MySQL ndb 集群 并备份恢复。

**场景:**原MySQL ndb 集群 由3台服务器组成,183、184、185,每个服务器上都有1个管理节点、1个数据节点、1个sql节点。
**需求:**184、185服务器暂时需要关机。只有一台183能使用。需要在183上重新部署1个MySQL ndb 集群(和原183、184、185集群数据节点数一样),就是说183这1台服务器上有1个管理节点,3个数据节点,1个sql节点,并且和183上原有的1个管理节点、1个数据节点、1个sql节点分隔开。

6.9.2.1、原183、184、185集群备份

使用START BACKUP命令创建备份
登录管理节点,执行如下命令即可备份集群:

[root@centos mysql]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> START BACKUP

为了跟踪备份过程,备份前在数据节点查看查看备份目录

183数据节点上查看备份目录

在这里插入图片描述

184数据节点上查看备份目录

在这里插入图片描述

185数据节点上查看备份目录

在这里插入图片描述

此集群的数据如下

在这里插入图片描述

然后在184管理节点执行备份命令(可以在任意节点执行备份命令)

ndb_mgm> START BACKUP
Connected to Management Server at: 192.168.2.183:1186
Waiting for completed, this may take several minutes
Node 11: Backup 1 started from node 1
ndb_mgm> Node 11: Backup 1 started from node 1 completed
 StartGCP: 19377 StopGCP: 19380
 #Records: 2061 #LogRecords: 0
 Data: 52200 bytes Log: 0 bytes

备份需要的时间取决于mysql ndb cluster集群的数据量。我这个集群和自由1个表其中有2条数据,在3秒之内就备份完了。当输出Node 11: Backup 1 started from node 1 completed,completed表示备份完成了。

在这里插入图片描述

备份完之后再查看3台数据节点的备份数据目录已经有备份文件了。

183数据节点上查看备份目录

在这里插入图片描述

184数据节点上查看备份目录

在这里插入图片描述

185数据节点上查看备份目录

在这里插入图片描述

注意每个数据节点的Data备份文件MD5SUM不同是正常的,因为不同的数据节点上存储的数据库数据完全不同。

数据节点的备份日志如下 /var/lib/mysql-cluster/ 目录下的*cluster文件
183数据节点的备份日志如下

2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

在这里插入图片描述

184数据节点的备份日志如下

2025-09-18 16:30:05 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

185数据节点的备份日志如下

2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1
2025-09-18 16:30:06 [MgmtSrvr] INFO     -- Node 11: Backup 1 started from node 1 completed. StartGCP: 19377 StopGCP: 19380 #Records: 2061 #LogRecords: 0 Data: 52200 bytes Log: 0 bytes

以下是命令解释可不看

使用START BACKUP命令创建备份:

START BACKUP [backup_id] [wait_option] [snapshot_option]

wait_option:
WAIT {STARTED | COMPLETED} | NOWAIT

snapshot_option:
SNAPSHOTSTART | SNAPSHOTEND

命令参数解释
1、backup_id
连续的备份会自动按顺序标识,因此backup_id(大于或等于1的整数)是可选的;如果省略它,则使用下一个可用值。如果使用已经存在的backup_id值,备份将失败,并显示错误Backup failed:file already exists。如果使用了backup_id这个命令参数,则必须在使用任何其他命令参数之前,紧跟在START BACKUP命令之后使用。

2、wait_option

wait_option这个命令参数可用于确定在发出START BACKUP 命令后,控制权何时返回给管理客户端,如下所述:

默认是等待备份命令完成才把控制权何时返回给管理客户端。

此参数的可选值是:[NOWAIT | WAIT STARTED | WAIT COMPLETED]

wait_option如果指定为NOWAIT,管理客户端将立即显示提示,如下所示:

ndb_mgm> START BACKUP NOWAIT
ndb_mgm>

在这种情况下,管理客户端甚至可以在打印备份过程的进度信息时使用。

wait_option如果指定为WAIT STARTED时,管理客户端将等待备份开始,然后将控制权返回给用户,如下所示:

ndb_mgm> START BACKUP WAIT STARTED
Waiting for started, this may take several minutes
Node 2: Backup 3 started from node 1
ndb_mgm>

wait_option如果指定为WAIT COMPLETED,管理客户端等待备份过程完成,然后再将控制权返回给用户。

3、snapshot_option
此参数的可选值是:[SNAPSHOTSTART | SNAPSHOTEND]

snapshot_option可用于确定备份是否与发出START BACKUP 时或完成时群集的状态匹配。SNAPSHOTSTART使备份与备份开始时群集的状态匹配; SNAPSHOTEND使备份反映备份完成时群集的状态。SNAPSHOTEND是默认值,与以前的NDB Cluster版本中的行为相匹配。

START BACKUP 命令解释

在这里插入图片描述

6.9.2.2、关闭原183、184、185集群

先关闭sql节点

在任何SQL节点使用mysqladmin shutdown终止。在所有sql节点上执行如下命令即可关闭sql节点。

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my.cnf  -p  shutdown

在所有sql节点主机上都要执行上述关闭命令。

然后关闭数据节点和管理节点
要关闭集群数据节点和管理节点,请在管理节点的计算机上的shell中输入以下命令:

ndb_mgm -e shutdown

这里的-e选项用于从shell向ndb_mgm客户端传递命令。该命令会导致ndb_mgm、ndb_mgmd以及任何ndbd或ndbmtd进程正常终止。

任意选择一个管理节点执行此命令即可。

6.9.2.3、在183上创建新集群

因为要和183上原有的1个数据节点。1个管理节点,1个sql节点分开。因此需要重新规划集群节点如下:

原183上1个数据节点。1个管理节点,1个sql节点配置如下:
数据节点和sql节点配置文件

[root@centos ~]# cat /etc/my.cnf
[client]
socket=/usr/local/mysql/data/mysql.sock

[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=100000
# Options for mysqld process,run NDB storage engine
ndbcluster

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/lib/mysql/mysqld.pid

[mysql_cluster]
# Options for NDB Cluster processes,location of management server
ndb-connectstring=192.168.2.183,192.168.2.184,192.168.2.185
[root@centos ~]# 

管理节点配置文件

[root@centos ~]# cat /var/lib/mysql-cluster/config.ini 
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=3    
# How much memory to allocate for data storage
DataMemory=4000M    
# How much memory to allocate for index storage
IndexMemory=512M   

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.183        
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.184        
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.185       
# Directory for management node log files
DataDir=/var/lib/mysql-cluster  

[ndbd]
# Options for data node 1:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.183      
# Node ID for this data node    
NodeId=11    
# Directory for this data node's data files                   
DataDir=/usr/local/mysql/data   

[ndbd]
# Options for data node 2:
# Hostname or IP address
HostName=192.168.2.184     
# Node ID for this data node     
NodeId=12
# Directory for this data node's data files                    
DataDir=/usr/local/mysql/data   

[ndbd]
# Options for data node 3:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.185  
# Node ID for this data node    
NodeId=13  
# Directory for this data node's data files                   
DataDir=/usr/local/mysql/data   

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.184          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore) 

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)             
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)             
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)             
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.185         
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)             
[root@centos ~]# 
6.9.2.3.1、新集群配置文件

在183上重新规划集群节点如下:3个数据节点。1个管理节点,1个sql节点。
不能使用原183上1个数据节点。1个管理节点,1个sql节点的配置,包括数据目录、监听端口、nodeid等

安装sql node
把mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz上传到/var/tmp目录下

cd /var/tmp
tar -xzvf mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64.tar.gz 
mv mysql-cluster-gpl-7.5.17-linux-glibc2.12-x86_64 /usr/local/mysql-1

新建sql节点配置文件

vi /etc/my-3307.cnf

内容如下

[client]
socket=/usr/local/mysql-1/data/mysql.sock

[mysqld]
datadir=/usr/local/mysql-1/data-3307
socket=/usr/local/mysql-1/data-3307/mysql-3307.sock
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_connections=100000
# Options for mysqld process,run NDB storage engine
ndbcluster

[mysqld_safe]
log-error=/var/log/mysqld-3307.log
pid-file=/var/lib/mysql-3307/mysqld-3307.pid

[mysql_cluster]
# Options for NDB Cluster processes,location of management server
ndb-connectstring=192.168.2.183:1187

建立数据节点目录并设置正确权限

mkdir -p /usr/local/mysql-1/data-14
mkdir -p /usr/local/mysql-1/data-15
mkdir -p /usr/local/mysql-1/data-16
chown -R mysql:mysql /usr/local/mysql-1/data-14
chown -R mysql:mysql /usr/local/mysql-1/data-15
chown -R mysql:mysql /usr/local/mysql-1/data-15
chmod 755 /usr/local/mysql-1/data-14
chmod 755 /usr/local/mysql-1/data-15
chmod 755 /usr/local/mysql-1/data-15

新建管理节点配置文件内容如下

mkdir -p /var/lib/mysql-cluster-183  
vi /var/lib/mysql-cluster-183/config-183.ini 
[ndbd default]
# Options affecting ndbd processes on all data nodes:
NoOfReplicas=3    
# How much memory to allocate for data storage
DataMemory=4000M    
# How much memory to allocate for index storage
IndexMemory=512M   

[ndb_mgmd]
# Management process options:
# Hostname or IP address of management node
HostName=192.168.2.183   
# Port for management node 
PortNumber=1187     
# Directory for management node log files
DataDir=/var/lib/mysql-cluster-183  


[ndbd]
# Options for data node 1:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.183      
# Node ID for this data node    
NodeId=14    
# Directory for this data node's data files                   
DataDir=/usr/local/mysql-1/data-14   

[ndbd]
# Options for data node 2:
# Hostname or IP address
HostName=192.168.2.183     
# Node ID for this data node     
NodeId=15
# Directory for this data node's data files                    
DataDir=/usr/local/mysql-1/data-15   

[ndbd]
# Options for data node 3:
# (one [ndbd] section per data node)        
# Hostname or IP address                        
HostName=192.168.2.183
# Node ID for this data node    
NodeId=16
# Directory for this data node's data files                   
DataDir=/usr/local/mysql-1/data-16   

[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)              
[mysqld]
# SQL node options:
# Hostname or IP address
HostName=192.168.2.183          
# (additional mysqld connections can be specified for this node 
#for various purposes such as running ndb_restore)                        

初始化sql node
进入到/usr/local/mysql-1目录,并使用mysqld --initialize初始化系统数据库,如下所示
初始化参考链接: http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization.html

安装sql node后,必须初始化data目录,包括mysql系统数据库中的表:
对于某些MySQL安装方法,数据目录初始化是自动的。
对于其他安装方法,必须手动初始化数据目录。这些包括在Unix和类Unix系统上从通用二进制和源代码发行版安装,以及在Windows上从ZIP Archive包安装。

本文是使用在Linux系统上从通用二进发行版安装的,因此需要手动初始化数据库。

其中192.168.2.183,192.168.2.184,192.168.2.185是你自己的mysql ndb cluster集群服务器IP地址。【此为直接执行的命令,后续有命令解释。】

cd /usr/local/mysql-1
mkdir mysql-files
chown mysql:mysql mysql-files
chmod -R 750 mysql-files

chown mysql:mysql /etc/my-3307.cnf

mkdir -p /usr/local/mysql-1/data
chown -R mysql:mysql /usr/local/mysql-1/data

touch /var/log/mysqld-3307.log
chown  mysql:mysql /var/log/mysqld-3307.log
chmod 777 /var/log/mysqld-3307.log

mkdir -p /var/lib/mysql-3307
chown -R mysql:mysql /var/lib/mysql-3307

bin/mysqld --defaults-file=/etc/my-3307.cnf --initialize --user=mysql
  
bin/mysql_ssl_rsa_setup

其中执行bin/mysqld --defaults-file=/etc/my-3307.cnf --initialize --user=mysql 会打印出Mysql的默认密码
最后一句:A temporary password is generated for root@localhost: ldH92drxw1-m

[root@centos mysql-1]# bin/mysqld --defaults-file=/etc/my-3307.cnf --initialize --user=mysql
2025-09-24T07:44:30.362996Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-09-24T07:44:30.953882Z 0 [Warning] InnoDB: New log files created, LSN=45790
2025-09-24T07:44:31.016390Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2025-09-24T07:44:31.025555Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 4e4b7f90-991a-11f0-a8a1-000c29b999f6.
2025-09-24T07:44:31.026308Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2025-09-24T07:44:31.430971Z 0 [Warning] CA certificate ca.pem is self signed.
2025-09-24T07:44:31.545799Z 1 [Note] A temporary password is generated for root@localhost: ldH92drxw1-m
[root@centos mysql-1]# 

至此配置并初始化完成,可以已启动ndb集群了

6.9.2.3.2、新集群启动
6.9.2.3.2.1、先启动管理节点

先启动管理节点
在管理主机183上,从系统shell发出以下命令以启动管理节点进程:

ndb_mgmd --initial -f /var/lib/mysql-cluster-183/config-183.ini 

在这里插入图片描述

第一次启动时,必须使用-f或–config-file选项告知ndb_mgmd在何处找到其配置文件,此选项还要求指定–initial。
第一次启动时,此选项还要求指定–initial

–initial : 使管理服务器从配置文件重新加载配置数据,忽略配置缓存。

然后查看集群状态

ndb_mgm --connect-string=192.168.2.183:1187

在这里插入图片描述

[root@centos ~]#  ndb_mgm --connect-string=192.168.2.183:1187
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1187
Cluster Configuration
---------------------
[ndbd(NDB)]     3 node(s)
id=14 (not connected, accepting connect from 192.168.2.183)
id=15 (not connected, accepting connect from 192.168.2.184)
id=16 (not connected, accepting connect from 192.168.2.185)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)

[mysqld(API)]   4 node(s)
id=17 (not connected, accepting connect from 192.168.2.183)
id=18 (not connected, accepting connect from 192.168.2.183)
id=19 (not connected, accepting connect from 192.168.2.183)
id=20 (not connected, accepting connect from 192.168.2.183)

ndb_mgm> 

查看管理节点日志文件

/var/lib/mysql-cluster-183
ls -l

在这里插入图片描述

[root@centos mysql-cluster-183]# cat ndb_1_cluster.log
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Got initial configuration from '/var/lib/mysql-cluster-183/config-183.ini', will try to set it when all ndb_mgmd(s) started
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Id: 1, Command port: *:1187
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Node 1: Node 1 Connected
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- MySQL Cluster Management Server mysql-5.7.29 ndb-7.5.17 started
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Node 1 connected
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Starting initial configuration change
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Configuration 1 commited
2025-09-24 15:58:35 [MgmtSrvr] INFO     -- Config change completed! New generation: 1
[root@centos mysql-cluster-183]# cat ndb_1_out.log
==INITIAL==
==CONFIRMED==
[root@centos mysql-cluster-183]# cat ndb_1.pid 
2931[root@centos mysql-cluster-183]# 
6.9.2.3.2.2、然后启动管理节点

然后启动数据节点

ndbd --ndb-nodeid=14 -c 192.168.2.183:1187
ndbd --ndb-nodeid=15 -c 192.168.2.183:1187
ndbd --ndb-nodeid=16 -c 192.168.2.183:1187

在这里插入图片描述

启动第一个数据节点后集群状态

在这里插入图片描述

启动第二个数据节点后集群状态

在这里插入图片描述

启动第三个数据节点后集群状态

在这里插入图片描述

查看第一个数据节点目录里面有什么内容

cd /usr/local/mysql-1/data-14
ls -l
[root@centos data-16]# cd /usr/local/mysql-1/data-14
[root@centos data-14]# ls -l
total 40
drwxr-x--- 9 root root  4096 Sep 24 16:23 ndb_14_fs
-rw-r--r-- 1 root root 32157 Sep 24 16:23 ndb_14_out.log
-rw-r--r-- 1 root root     4 Sep 24 16:23 ndb_14.pid
[root@centos data-14]# 

在这里插入图片描述

查看第二个数据节点目录里面有什么内容

cd /usr/local/mysql-1/data-15
ls -l
[root@centos data-14]# cd /usr/local/mysql-1/data-15
[root@centos data-15]# ls -l
total 24
drwxr-x--- 9 root root  4096 Sep 24 16:23 ndb_15_fs
-rw-r--r-- 1 root root 13887 Sep 24 16:23 ndb_15_out.log
-rw-r--r-- 1 root root     4 Sep 24 16:23 ndb_15.pid

在这里插入图片描述

查看第三个数据节点目录里面有什么内容

cd /usr/local/mysql-1/data-16
ls -l



```bash
[root@centos data-15]# cd /usr/local/mysql-1/data-16
[root@centos data-16]# ls -l
total 24
drwxr-x--- 9 root root  4096 Sep 24 16:23 ndb_16_fs
-rw-r--r-- 1 root root 13785 Sep 24 16:23 ndb_16_out.log
-rw-r--r-- 1 root root     4 Sep 24 16:23 ndb_16.pid
[root@centos data-16]# 

在这里插入图片描述

6.9.2.3.2.3、最后启动sql节点

最后启动sql节点

cd /usr/local/mysql-1
bin/mysqld_safe --defaults-file=/etc/my-3307.cnf --user=mysql &

在这里插入图片描述

然后查看集群状态

ndb_mgm --connect-string=192.168.2.183:1187
[root@centos mysql-cluster-183]# ndb_mgm --connect-string=192.168.2.183:1187
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.2.183:1187
Cluster Configuration
---------------------
[ndbd(NDB)]     3 node(s)
id=14   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0, *)
id=15   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0)
id=16   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)

[mysqld(API)]   4 node(s)
id=17   @192.168.2.183  (mysql-5.7.29 ndb-7.5.17)
id=18 (not connected, accepting connect from 192.168.2.183)
id=19 (not connected, accepting connect from 192.168.2.183)
id=20 (not connected, accepting connect from 192.168.2.183)

ndb_mgm> 

在这里插入图片描述

登录mysql修改初始密码并查看数据库

链接: https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/postinstallation.html

在sql节点主机上,使用初始化sql节点时生成的默认密码登录mysql ndb cluster集群。

mysql -uroot -p -S /usr/local/mysql-1/data-3307/mysql-3307.sock

没修改默认密码前不能进行数据库sql操作

在这里插入图片描述

修改Mysql默认密码为Mysql@123

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql@123' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)

mysql>  flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>  use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host = "%" where user = "root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Mysql@123';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> 

使用新密码登录mysql数据库

在这里插入图片描述

6.9.2.4、在183上恢复原183、184、185集群数据
6.9.2.4.1、备份文件里面有什么

备份文件中包含有一个名为test的数据库,test数据库里面有一个名为users的表,users表中有2条数据。

在这里插入图片描述

6.9.2.4.2、验证备份文件

在183数据节点上执行此命令 (nodeid=11)

ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=11 --backup_path=/usr/local/mysql-1/data-14/BACKUP/BACKUP-1

输出如下

[root@centos BACKUP-1]# ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=11 --backup_path=/usr/local/mysql-1/data-14/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql-1/data-14/BACKUP/BACKUP-1
2025-09-24 17:43:36 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-14/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:43:36 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:43:36 [restore_metadata] Get number of Tables
2025-09-24 17:43:36 [restore_metadata] Validate Footer
2025-09-24 17:43:36 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:43:36 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-24 17:43:36 [restore_metadata] Save foreign key info
2025-09-24 17:43:36 [restore_data] Start restoring table data
[root@centos BACKUP-1]#

在183数据节点上执行此命令 (nodeid=12)

ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=12 --backup_path=/usr/local/mysql-1/data-15/BACKUP/BACKUP-1

输出如下

[root@centos BACKUP-1]# ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=12 --backup_path=/usr/local/mysql-1/data-15/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 12
backup path = /usr/local/mysql-1/data-15/BACKUP/BACKUP-1
2025-09-24 17:44:34 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-15/BACKUP/BACKUP-1/BACKUP-1.12.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:44:34 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:44:34 [restore_metadata] Get number of Tables
2025-09-24 17:44:34 [restore_metadata] Validate Footer
2025-09-24 17:44:34 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:44:34 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-24 17:44:34 [restore_metadata] Save foreign key info
2025-09-24 17:44:34 [restore_data] Start restoring table data
[root@centos BACKUP-1]# 

在183数据节点上执行此命令 (nodeid=13)

ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=13 --backup_path=/usr/local/mysql-1/data-16/BACKUP/BACKUP-1

输出如下

[root@centos BACKUP-1]# ndb_restore -c 192.168.2.183:1187 -b 1 --print  --nodeid=13 --backup_path=/usr/local/mysql-1/data-16/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 13
backup path = /usr/local/mysql-1/data-16/BACKUP/BACKUP-1
2025-09-24 17:44:55 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-16/BACKUP/BACKUP-1/BACKUP-1.13.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:44:55 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:44:55 [restore_metadata] Get number of Tables
2025-09-24 17:44:55 [restore_metadata] Validate Footer
2025-09-24 17:44:55 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:44:55 [restore_metadata] Restoring tables
-- test/def/users --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 3
Number of primary keys: 1
Length of frm data: 312
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 1
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- test/def/NDB$BLOB_10_2 --
Version: 3
Fragment type: HashMapPartition
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: no
Number of attributes: 4
Number of primary keys: 2
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 0
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: -- sys/def/10/PRIMARY --
Version: 3
Fragment type: FragUndefined
K Value: 6
Min load factor: 78
Max load factor: 80
Temporary table: yes
Number of attributes: 2
Number of primary keys: 1
Length of frm data: 0
Max Rows: 0
Row Checksum: 1
Row GCI: 1
SingleUserMode: 2
ForceVarPart: 0
PartitionCount: 3
FragmentCount: 3
PartitionBalance: FOR_RP_BY_LDM
ExtraRowGciBits: 0
ExtraRowAuthorBits: 0
TableStatus: Retrieved
Table options:

Successfully printed table: 2025-09-24 17:44:55 [restore_metadata] Save foreign key info
2025-09-24 17:44:55 [restore_data] Start restoring table data
[root@centos BACKUP-1]#
6.9.2.4.3、恢复前新集群没有任何数据,如下

是一个全新的集群,复前新集群没有任何数据

在这里插入图片描述

6.9.2.4.4、按照备份文件含有的信息创建空数据库

比如说备份文件中有一个数据库名为test,那就创建一个名为test的空数据库。要恢复多少数据库,就创建多少空的数据库。

CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4;
6.9.2.4.5、执行备份数据恢复到新集群

把原183、184、185集群的备份文件上传到新集群的每个数据节点目录下,如下

先在每个节点的数据目录下创建备份目录,其他集群的备份文件上传到次目录进行恢复
因为原集群备份文件的id=1,所以创建目录是指定为BACKUP/BACKUP-1

mkdir -p /usr/local/mysql-1/data-14/BACKUP/BACKUP-1
mkdir -p /usr/local/mysql-1/data-15/BACKUP/BACKUP-1
mkdir -p /usr/local/mysql-1/data-16/BACKUP/BACKUP-1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

元数据恢复(一次,在任意一个数据节点上进行1次即可),元数据恢复会做些什么呢?元数据恢复会建立表,但不会导入表数据。

183数据节点

ndb_restore -c 192.168.2.183:1187 -b 1 -m --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1

输出如下

[root@centos BACKUP-1]# ndb_restore -c 192.168.2.183:1187 -b 1 -m --nodeid=11 --backup_path=/usr/local/mysql/data/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql/data/BACKUP/BACKUP-1
2025-09-24 17:50:18 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql/data/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:50:18 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:50:18 [restore_metadata] Get number of Tables
2025-09-24 17:50:18 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-24 17:50:19 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:50:19 [restore_metadata] Restoring tables
Successfully restored table `test/def/users`
Successfully restored table event REPL$test/users
2025-09-24 17:50:19 [restore_metadata] Save foreign key info
Successfully created index `PRIMARY` on `users`
Create foreign keys
Create foreign keys done
2025-09-24 17:50:19 [restore_data] Start restoring table data
[root@centos BACKUP-1]# 

在这里插入图片描述

元数据恢复会做些什么呢?元数据恢复会建立表,但不会导入表数据。

在这里插入图片描述

数据和日志恢复(在所有数据节点上都要执行1次)

183的第一个数据节点

ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=11 --backup_path=/usr/local/mysql-1/data-14/BACKUP/BACKUP-1

输出如下

[root@centos ~]# ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=11 --backup_path=/usr/local/mysql-1/data-14/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 11
backup path = /usr/local/mysql-1/data-14/BACKUP/BACKUP-1
2025-09-24 17:54:51 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-14/BACKUP/BACKUP-1/BACKUP-1.11.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:54:51 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:54:51 [restore_metadata] Get number of Tables
2025-09-24 17:54:51 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-24 17:54:51 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:54:51 [restore_metadata] Restoring tables
2025-09-24 17:54:51 [restore_metadata] Save foreign key info
2025-09-24 17:54:51 [restore_data] Start restoring table data
2025-09-24 17:54:51 [restore_data] Read data file header
Opening file '/usr/local/mysql-1/data-14/BACKUP/BACKUP-1/BACKUP-1-0.11.Data'
File size 17944 bytes
2025-09-24 17:54:51 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 0
_____________________________________________________
Processing data in table: test/def/users(10) fragment 0
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 0
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 0
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 0
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 0
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 0
2025-09-24 17:54:51 [restore_log] Read log file header
Opening file '/usr/local/mysql-1/data-14/BACKUP/BACKUP-1/BACKUP-1.11.log'
File size 52 bytes
2025-09-24 17:54:51 [restore_log] Restore log entries
Restored 0 tuples and 0 log entries
[root@centos ~]# 

在这里插入图片描述

在第一个数据节点进行数据和日志恢复后,查看users表还是没有数据。这没关系,说明user表数据存储在另外2个数据节点上,继续进行另外2个数据节点的数据和日志恢复即可。

在这里插入图片描述

183的第二个数据节点

ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=12 --backup_path=/usr/local/mysql-1/data-15/BACKUP/BACKUP-1

输入如下

[root@centos ~]# ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=12 --backup_path=/usr/local/mysql-1/data-15/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 12
backup path = /usr/local/mysql-1/data-15/BACKUP/BACKUP-1
2025-09-24 17:57:13 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-15/BACKUP/BACKUP-1/BACKUP-1.12.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:57:13 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:57:13 [restore_metadata] Get number of Tables
2025-09-24 17:57:13 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-24 17:57:14 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:57:14 [restore_metadata] Restoring tables
2025-09-24 17:57:14 [restore_metadata] Save foreign key info
2025-09-24 17:57:14 [restore_data] Start restoring table data
2025-09-24 17:57:14 [restore_data] Read data file header
Opening file '/usr/local/mysql-1/data-15/BACKUP/BACKUP-1/BACKUP-1-0.12.Data'
File size 18292 bytes
2025-09-24 17:57:14 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 1
_____________________________________________________
Processing data in table: test/def/users(10) fragment 1
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 1
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 1
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 1
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 1
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 1
2025-09-24 17:57:14 [restore_log] Read log file header
Opening file '/usr/local/mysql-1/data-15/BACKUP/BACKUP-1/BACKUP-1.12.log'
File size 52 bytes
2025-09-24 17:57:14 [restore_log] Restore log entries
Restored 1 tuples and 0 log entries
[root@centos ~]# 

在第二个数据节点进行数据和日志恢复后,查看users表发现只恢复了1条数据,总共有2条数据。这没关系,说明user表另外一条数据存储在第3个数据节点上,继续进行第3个数据节点的数据和日志恢复即可。这也说明了为什么要在所有的数据节点上执行数据和日志恢复。

在这里插入图片描述

183的第三个数据节点

ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=13 --backup_path=/usr/local/mysql-1/data-16/BACKUP/BACKUP-1
[root@centos ~]# ndb_restore -c 192.168.2.183:1187 -b 1 -r --nodeid=13 --backup_path=/usr/local/mysql-1/data-16/BACKUP/BACKUP-1
Backup Id = 1
Nodeid = 13
backup path = /usr/local/mysql-1/data-16/BACKUP/BACKUP-1
2025-09-24 17:58:31 [restore_metadata] Read meta data file header
Opening file '/usr/local/mysql-1/data-16/BACKUP/BACKUP-1/BACKUP-1.13.ctl'
File size 24288 bytes
Backup version in files: ndb-6.3.11 ndb version: mysql-5.7.29 ndb-7.5.17
2025-09-24 17:58:31 [restore_metadata] Load content
Start GCP of Backup: 19377
Stop GCP of Backup: 19380
2025-09-24 17:58:31 [restore_metadata] Get number of Tables
2025-09-24 17:58:31 [restore_metadata] Validate Footer
Connected to ndb!!
2025-09-24 17:58:31 [restore_metadata] Restore objects (tablespaces, ..)
2025-09-24 17:58:31 [restore_metadata] Restoring tables
2025-09-24 17:58:31 [restore_metadata] Save foreign key info
2025-09-24 17:58:31 [restore_data] Start restoring table data
2025-09-24 17:58:31 [restore_data] Read data file header
Opening file '/usr/local/mysql-1/data-16/BACKUP/BACKUP-1/BACKUP-1-0.13.Data'
File size 16864 bytes
2025-09-24 17:58:31 [restore_data] Restore fragments
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_sample(7) fragment 2
_____________________________________________________
Processing data in table: test/def/users(10) fragment 2
_____________________________________________________
Processing data in table: test/def/NDB$BLOB_10_2(11) fragment 2
_____________________________________________________
Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_apply_status(9) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_index_stat_head(6) fragment 2
_____________________________________________________
Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 2
_____________________________________________________
Processing data in table: sys/def/SYSTAB_0(2) fragment 2
_____________________________________________________
Processing data in table: mysql/def/ndb_schema(4) fragment 2
2025-09-24 17:58:31 [restore_log] Read log file header
Opening file '/usr/local/mysql-1/data-16/BACKUP/BACKUP-1/BACKUP-1.13.log'
File size 52 bytes
2025-09-24 17:58:31 [restore_log] Restore log entries
Restored 1 tuples and 0 log entries
[root@centos ~]# 

在最后一个也就是第三个数据节点进行数据和日志恢复后,查看users表发现恢复了全部2条数据,user表总共有2条数据。 这也说明了为什么要在所有的数据节点上执行数据和日志恢复。

在这里插入图片描述

6.9.2.4.6、关闭新集群(记录命令)

关闭sql节点

cd /usr/local/mysql
bin/mysqladmin --defaults-file=/etc/my-3307.cnf  -p  shutdown -S /usr/local/mysql-1/data-3307/mysql-3307.sock

在这里插入图片描述

关闭数据节点和管理节点

ndb_mgm -e shutdown -c 192.168.2.183:1187

在这里插入图片描述

6.10 NDB集群的MySQL服务器使用

6.11 NDB集群磁盘数据表

6.12 NDB集群中使用ALTER TABLE的联机操作

6.13使用共享授予表分配权限

6.14 NDB API统计计数器和变量

6.15 ndbinfo:NDB集群信息数据库

6.16 INFORMATION_NDB集群的SCHEMA表

6.17快速参考:NDB集群SQL语句

6.18 NDB群集安全问题

7、NDB集群复制

7.1 NDB集群复制:缩写和符号

7.2 NDB集群复制的一般要求

7.3 NDB集群复制中的已知问题

7.4 NDB集群复制模式和表

7.5准备NDB群集以进行复制

7.6启动NDB群集复制(单个复制通道)

7.7使用两个复制通道进行NDB集群复制

7.8使用NDB集群复制实现MySQL

7.9使用NDB群集复制的NDB群集备份

7.10NDB集群复制:双向和循环复制

7.11NDB集群复制冲突解决

8、NDB集群版本说明

NDB Cluster版本中的更改与本参考手册分开记录;您可以在NDB 7.5发行说明中 链接: https://dev.mysql.com/doc/relnotes/mysql-cluster/7.5/en/ 找到每个NDB Cluster 7.5版本中更改的发行说明,并在NDB 7.6发行说明中 链接: https://dev.mysql.com/doc/relnotes/mysql-cluster/7.6/en/ 找到每个NDB Cluster 7.6版本的发行说明。
您可以从NDB Cluster Release Notes 链接: https://dev.mysql.com/doc/index-cluster.html#cluster-relnotes 获取旧版本NDB Cluster的发行说明。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值