10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册 从本手册中摘录

21.1.1 NDB集群核心概念

ndbcluster.(也称为NDB)是内存存储引擎,提供高可用性和数据持久性功能。

ndbcluster.存储引擎可以配置有一系列故障转移和负载平衡选项,但它最容易以群集级别的存储引擎开头。NDB群集NDB存储引擎包含一组完整的数据,仅依赖于群集本身内的其他数据。

NDB Cluster的部分配置独立于MySQL服务器。在一个NDB集群中,集群的每个部分被认为是一个节点

笔记

在很多情况下,这个词节点用于表示计算机,但是在讨论NDB集群时,它意味着过程。在一台计算机上运行多个节点是可能的;对于运行一个或多个集群节点的计算机,我们使用这个术语集群主机

群集节点有三种类型,并且在最小的NDB群集配置中,必须至少有三个节点,其中一个节点,其中一个节点:

  • 管理节点:这种类型的节点的作用是管理NDB集群内的其他节点,执行这样的功能,作为提供配置数据,启动和停止节点以及运行备份。因为此节点类型管理其他节点的配置,所以应该首先启动此类型的节点,在任何其他节点之前。使用命令启动管理节点ndb_mgmd.

  • 数据节点:此类型的节点存储群集数据。有多种数据节点,因为有片段副本,次数的次数(见第21.1.2节,“NDB集群节点,节点组,片段副本和分区”)。例如,对于两个片段副本,每个片段具有两个片段,需要四个数据节点。一个片段副本足以进行数据存储,但不提供冗余;因此,建议使用两个(或更多)片段副本来提供冗余,从而提供高可用性。使用命令启动数据节点NDBD.(看第21.4.1节,“ndbd - NDB集群数据节点守护进程”)或ndbmtd(看第21.4.3节“NDBMTD - NDB群集数据节点守护程序(多线程)”)。

    NDB群集表通常完全存储在内存中而不是磁盘上(这就是我们将NDB群集引用的原因内存中数据库)。但是,某些NDB群集数据可以存储在磁盘上;看第21.5.10节“NDB群集磁盘数据表”,以获取更多信息。

  • SQL节点:这是访问群集数据的节点。在NDB群集的情况下,SQL节点是一个传统的MySQL服务器,它使用了ndbcluster.存储引擎。SQL节点是一个mysqld.过程开始了- ndbcluster.--ndb-connectstring.选项,这些选项在本章的其他地方解释,也可能包含其他MySQL Server选项。

    SQL节点实际上只是一种专用类型API节点,它指定访问NDB群集数据的任何应用程序。API节点的另一个例子是ndb_restore用于恢复群集备份的实用程序。可以使用NDB API编写此类应用程序。有关NDB API的基本信息,请参阅开始使用NDB API

重要的

期望在生产环境中使用三个节点设置并不现实。这种配置不提供冗余;要从NDB集群的高可用性功能中受益,必须使用多个数据和SQL节点。建议使用多个管理节点的使用。

有关NDB集群中节点,节点组,片段副本和分区之间的关系的简要介绍,请参阅第21.1.2节,“NDB集群节点,节点组,片段副本和分区”

集群的配置涉及在群集中配置每个单独的节点并在节点之间设置各个通信链路。NDB集群目前设计的目的是,目的是数据节点在处理器电源,内存空间和带宽方面是同质的。此外,为了提供单个配置,整个集群的所有配置数据都位于一个配置文件中。

管理服务器管理集群配置文件和集群日志。集群中的每个节点从管理服务器检索配置数据,因此需要一种确定管理服务器所在位置的方法。当数据节点中发生感兴趣的事件时,节点将有关这些事件的信息传输给管理服务器,然后管理服务器将这些信息写入集群日志。

此外,可以有任意数量的集群客户机进程或应用程序。这些包括标准的MySQL客户端,NDB-特定的API程序和管理客户端。这些在接下来的几段中描述。

标准MySQL客户端。NDB集群可以与PHP,Perl,C,C ++,Java,Python,Ruby等的现有MySQL应用程序一起使用。此类客户端应用程序将SQL语句发送到从作为NDB群集SQL节点的MySQL服务器的响应,它们与独立MySQL服务器交互相同的方式。

可以修改使用NDB集群作为数据源的MySQL客户端,以利用连接多个MySQL服务器来实现负载平衡和故障转移的能力。例如,使用连接器/ J 5.0.6及更高版本的Java客户端可以使用jdbc: mysql: loadbalance: / /url(在Connector/J 5.1.7中改进)实现了透明的负载均衡;有关在NDB Cluster中使用Connector/J的更多信息,请参见使用NDB群集的连接器/ j

NDB客户程序程序。可以将客户端程序直接从中写入访问NDB群集数据ndbcluster.存储引擎,绕过可能连接到群集的MySQL服务器,使用NDB API.,一个高级c++ API。对于不需要数据的SQL接口的特定目的,此类应用程序可能很有用。有关更多信息,请参见NDB API

NDB- 使用的特定Java应用程序也可以使用的是NDB群集使用用于Java的NDB集群连接器。这个NDB集群连接器包括clusterj.,类似于对象关系映射持久性框架的高级数据库API,例如直接连接的Hibernate和JPAndbcluster.,因此不需要访问MySQL服务器。看到Java和NDB集群,ClusterJ API和数据对象模型,以获取更多信息。

管理客户。这些客户机连接到管理服务器,并提供用于正常启动和停止节点、启动和停止消息跟踪(仅调试版本)、显示节点版本和状态、启动和停止备份等的命令。这类程序的一个例子是ndb_mgm管理客户端提供NDB集群(参见第21.4.5节“NDB_MGM - NDB群集管理客户端”)。类可以编写此类应用程序米高梅API,一个c语言API,它直接与一个或多个NDB集群管理服务器通信。有关更多信息,请参见MGM API.

Oracle还提供了MySQL集群管理器,它提供了一个高级的命令行界面,简化了许多复杂的NDB集群管理任务,比如用大量节点重新启动NDB集群。MySQL集群管理器客户端还支持用于获取和设置大多数节点配置参数值的命令mysqld.服务器选项和与NDB集群相关的变量。看到MySQL™Cluster Manager 1.4.8用户手册,以获取更多信息。

事件日志。NDB群集按类别记录事件(启动,关闭,错误,检查点等),优先级和严重性。可以找到所有可报告事件的完整列表第21.5.3节“在NDB集群中生成的事件报告”。事件日志在此列出的两种类型:

  • 群集日志:为整体记录集群的所有所需可报告事件的记录。

  • 节点日志:为每个单独的节点保存的单独日志。

笔记

在正常情况下,只保存和检查集群日志是必要和充分的。仅在应用程序开发和调试时需要参考节点日志。

检查站。一般来说,当数据被保存到磁盘时,据说一个检查站已达成。更具体的NDB集群,检查点是所有已提交的事务存储在磁盘上的时间点。关于NDB存储引擎,有两种类型的检查点,共同努力,以确保维护群集数据的一致视图。这些如下列表所示:

  • 当地检查站(LCP):这是一个特定于单个节点的检查点;但是,LCP更加或更少地为群集中的所有节点进行。LCP通常每隔几分钟发生一次;精确的间隔变化,并且取决于节点存储的数据量,集群活动的级别和其他因素。

    在NDB 7.6.4之前,LCP涉及将所有节点的数据保存到磁盘。NDB 7.6.4介绍了对部分LCP的支持,这可以在某些条件下显着提高恢复时间。看到第21.1.4.2节“NDB集群7.6”中的新增功能,欲了解更多信息,以及对的描述启用partiallcp.RecoveryWork配置参数,允许部分lcp并控制它们使用的存储量。

  • 全球检查站(GCP):当同步所有节点的事务并将重做日志刷新到磁盘时,每隔几秒钟就会发生一次GCP。

有关本地检查点和全局检查点创建的文件和目录的更多信息,请参阅NDB群集数据节点文件系统目录