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