当前位置: 首页 > MySQL数据库

MySQL集群NDB 7.5有哪些知识点

时间:2026-01-28 14:10:38

MySQL Cluster是在shared-nothing系统中开启in-memory数据库集群功能的一项技术。shared-nothing架构可以使系统以廉价的硬件工作,对硬件和软件的需求很小。

MySQL集群被设计成没有任何单点故障。在一套shared-nothing系统中,每个节点都有自己的内存和硬盘,像共享网络、网络问卷系统和SAN存储这些共享存储机制不被MySQL集群推荐和支持。

MySQL集群通过一个称为NDB的内存集群存储引擎,和标准的MySQL服务器集成在一起。NDB是Network DataBase的缩写。MySQL集群是MySQL服务器和NDB存储引擎的结合。

一套MySQL集群包含一系列的电脑主机,每台主机运行一个或多个进程;这些进程被称为节点,包含MySQL服务器(用于访问NDB的数据)、数据节点(用于存储数据)、一个或多个管理服务器、其他定制的数据访问程序。这些节点的关系图如下:

 

集群中的节点可以被停止或重启,也可以再次加入集群中。

NDBCLUSTER(也称为NDB)是一个提供高可用性和数据永久化的内存存储引擎。

NDBCLUSTER可以通过配置一些参数实现故障切换和负载均衡。需要注意的是,在MySQL集群中,一个节点是指一台主机,而是一个进程;可以在一台主机上运行多个节点。

在一套MySQL集群配置中,至少有三个节点:

管理节点:这个节点的角色是管理集群中的其他节点,提供配置数据,启动停止节点和执行备份功能。因为这个节点管理其他节点的配置信息,在集群中应该首先启动这个节点。通过ndb_mgmd命令启动MGM节点。

数据节点:这种类型的节点存储集群的数据。MySQL集群中的表通常被保存在内存中而不是磁盘上(这是我们称呼MySQL集群为内存数据库的原因)。然而,一些MySQL集群的数据也可以储存在磁盘上。

SQL节点:这各节点用来访问集群数据。在MySQL集群中,SQL节点是使用NDBCLUSTER存储引擎的传统的MySQL服务器。SQL节点通过mysqld --ndbcluster --ndb-connectstring方式启动。

在生产环境中,部署一套三节点的MySQL集群是不现实的,因为这样的配置无法提供冗余保护。想要实现MySQL集群的高可用性,需要部署多个数据节点和SQL节点,管理节点也推荐部署多个。

管理服务器负责管理集群的配置和集群日志。每个集群节点读取管理服务器上面的配置信息。

另外,除了上面这些节点,还有集群客户端进程和应用程序,包括标准的MySQL客户端、NDB特定的API程序和管理客户端。

MySQL集群有两种日志:
集群日志:记录集群的事件报告
节点日志:每个节点的单独日志

通常,只需要检查集群日志即可,只要当开发应用程序或排错时才会用到节点日志检查点,一般来说,当数据被保存到磁盘上时,会触发一个检查点。在MySQL集群中,当被提交的事务数据被保存到磁盘上时,会触发检查点。对于NDB存储引擎,有两种类型的检查点一起工作来确保集群数据的一致性。

本地检查点(LCP):这是单独节点上面的检查点。一个本地检查点会保存本地节点上面的所有数据到磁盘上,每几分钟会触发一次,触发检查点的时间间隔依据节点上面的数据量、集群的活动级别和其他因素而定。

全局检查点(GCP):全局检查点每几秒钟会发生一次,当所有节点上面的事务同步且日志文件被刷新到磁盘上时发生。

一个数据节点是一个ndbd进程,每个数据节点需要部署到不同的主机上,MySQL集群不支持在同一台主机上部署多个ndbd进程。
[root@dongdan ~]# ps -ef|grep ndbd
root     23759     1  0 Aug03 ?        00:00:00 ndbd
root     23760 23759  0 Aug03 ?        00:24:05 ndbd
root     31446 31395  0 13:46 pts/2    00:00:00 grep ndbd

管理节点的进程是ndb_mgmd进程,SQL节点的进程是mysqld进程。
[root@dongdan ~]# ps -ef|grep mysqld
root     23833     1  0 Aug03 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/var/lib/mysql/main_my.cnf
mysql    24051 23833  0 Aug03 ?        00:36:04 /usr/sbin/mysqld --defaults-file=/var/lib/mysql/main_my.cnf --basedir=/usr --datadir=/var/lib/mysql/database --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/database/dongdan.err --pid-file=/var/lib/mysql/database/dongdan.pid --socket=/var/lib/mysql/mysql.sock --port=3306
root     31464 31395  0 13:50 pts/2    00:00:00 grep mysqld

节点组包含一个或多个节点。

MySQL集群使用心跳和超时机制,当其中一个节点网络无法联通时,会判断这个节点失效。


上一篇:怎么理解MarriDB/MySQL的binlog group commit技术
下一篇:怎么搭建LVS+Keepalived+MySQL
mysql
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素