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。