NDB 集群 是一种使内存数据库集群化的技术,在共享 nothing 系统中工作。共享 nothing 架构使系统能够使用非常廉价的硬件,并且对硬件或软件的要求最小。
NDB 集群旨在没有单点故障。在共享 nothing 系统中,每个组件都期望拥有自己的内存和磁盘,不推荐或支持使用共享存储机制,如网络共享、网络文件系统和 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.3 SQL 节点使用 mysqld 服务器守护进程,该守护进程与 MySQL 服务器 8.3 发行版中提供的 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 集群备份”。您也可以使用标准 MySQL 功能来实现此目的,例如 mysqldump 和 MySQL 服务器。请参阅 第 6.5.4 节,“mysqldump — 数据库备份程序”,以获取更多信息。
NDB 集群节点可以使用不同的传输机制进行节点间通信;在大多数实际部署中,使用 TCP/IP 进行标准 100 Mbps 或更快的以太网硬件通信。