NDB Cluster 是一种技术,它能够在无共享系统中对内存数据库进行集群。无共享架构使系统能够使用非常便宜的硬件,并且对硬件或软件的特定需求降至最低。
NDB Cluster 被设计为没有单点故障。在无共享系统中,每个组件都应该有自己的内存和磁盘,并且不推荐或支持使用共享存储机制,例如网络共享、网络文件系统和 SAN。
NDB Cluster 将标准 MySQL 服务器与一个名为 NDB
的内存集群存储引擎集成在一起(代表 “Network DataBase””)。在我们的文档中,术语 NDB
指的是特定于存储引擎的设置部分,而 “MySQL NDB Cluster” 指的是一个或多个 MySQL 服务器与 NDB
存储引擎的组合。
一个 NDB Cluster 由一组计算机组成,称为 主机,每个主机运行一个或多个进程。这些进程称为 节点,可能包括 MySQL 服务器(用于访问 NDB 数据)、数据节点(用于存储数据)、一个或多个管理服务器,以及可能的其他专门的数据访问程序。这些组件在 NDB Cluster 中的关系如下所示
所有这些程序协同工作以形成一个 NDB Cluster(请参见 第 25.5 节“NDB Cluster 程序”)。当数据被 NDB
存储引擎存储时,表(和表数据)将存储在数据节点中。这些表可以直接从集群中的所有其他 MySQL 服务器(SQL 节点)访问。因此,在将数据存储在集群中的工资单应用程序中,如果一个应用程序更新了员工的薪资,所有其他查询此数据的 MySQL 服务器都可以立即看到此更改。
一个 NDB Cluster 9.0 SQL 节点使用 mysqld 服务器守护进程,它与 MySQL Server 9.0 发行版提供的 mysqld 相同。您应该牢记,mysqld 的实例(无论版本如何),如果未连接到 NDB Cluster,则不能使用 NDB
存储引擎,也不能访问任何 NDB Cluster 数据.
存储在 NDB Cluster 的数据节点中的数据可以被镜像;集群可以处理单个数据节点的故障,而不会产生其他影响,除了少数事务由于丢失事务状态而被中止。由于事务应用程序预计会处理事务故障,因此这应该不会成为问题来源。
可以停止和重新启动单个节点,然后它们可以重新加入系统(集群)。滚动重启(其中所有节点依次重启)用于进行配置更改和软件升级(请参见 第 25.6.5 节“执行 NDB Cluster 的滚动重启”)。滚动重启也是在线添加新数据节点过程的一部分(请参见 第 25.6.7 节“在线添加 NDB Cluster 数据节点”)。有关数据节点、它们如何在 NDB Cluster 中组织以及它们如何处理和存储 NDB Cluster 数据的更多信息,请参见 第 25.2.2 节“NDB Cluster 节点、节点组、片段副本和分区”.
可以使用 NDB Cluster 管理客户端中找到的 NDB
原生功能以及 NDB Cluster 发行版中包含的 ndb_restore 程序来备份和恢复 NDB Cluster 数据库。有关更多信息,请参见 第 25.6.8 节“NDB Cluster 的在线备份”,以及 第 25.5.23 节“ndb_restore — 恢复 NDB Cluster 备份”。您还可以使用 mysqldump 和 MySQL 服务器为此目的提供的标准 MySQL 功能。有关更多信息,请参见 第 6.5.4 节“mysqldump — 数据库备份程序”.
NDB Cluster 节点可以使用不同的传输机制进行节点间通信;大多数实际部署中使用的是标准 100 Mbps 或更快的以太网硬件上的 TCP/IP。