下面给出的术语对理解MySQL簇有所帮助,而且在与MySQL簇一起使用时有一定的特殊含义。
· 簇:
按照通常的理解,簇是一个计算机集合,其功能相当于1个单位,一起工作以完成单一任务。
NDB簇:
这是MySQL中使用的存储引擎,用于实现数据存储、检索、以及多个计算机间分布式管理。
MySQL簇:
指的是使用NDB存储引擎一起工作的一组计算机,以便在使用“内存中”存储的非共享体系结构中支持分布式MySQL数据库。
· 配置文件:
包含与簇、其主机和节点有关的指令和信息的文本文件。当簇启动时,这类文件由簇的管理节点负责读取。详情请参见17.4.4节,“配置文件”。
· 备份:
所有簇数据、事务和日志的完整拷贝,保存在磁盘上或其他长期存储介质上。
· 恢复:
将簇返回以前的状态,与保存在备份中的相同。
· 检查点:
从广义上讲,将数据保存到磁盘时,即达到了检查点。具体对于簇来说,它是将所有已提交事务保存到磁盘的时间点。对于NDB存储引擎,有两种一起工作的检查点,以确保维护簇数据的一致性:
o 本地检查点(LCP):
这是专门针对单一节点的检查点,但是,LCP也会在簇中的所有节点发生,同步性或强或弱。LCP包括将节点的所有数据保存到磁盘,通常每几分钟出现一次。准确的时间间隔会出现变化,具体情况取决于节点上保存的数据量,簇活动的级别,以及其他因素。
o 全局检查点(GCP):
GCP每数秒出现一次,此时,将对所有节点的事务进行同步化处理,并将redo日志保存到磁盘。
· 簇主机:
构成MySQL簇组成部分的计算机。簇具有物理结构和逻辑结构。从物理意义上讲,簇由多个计算机构成,这些计算机也称为簇主机(或主机)另请参见下面的节点和节点组。
· 节点:
它指的是MySQL簇的逻辑或功能性单元,有时也称为簇节点。对于MySQL簇,我们使用术语“节点”表示进程而不是簇的物理部件。实施有效的MySQL簇需要三种节点。它们是:
o 管理(MGM)节点:
负责管理簇中的其他节点。它为其他节点提供了配置数据,负责启动和停止节点,处理网络分区事宜,创建备份和从备份恢复,等等。
o SQL(MySQL服务器)节点:
MySQL服务器的实例,用作簇数据节点所保存数据的前端。打算保存、检索或更新数据的客户端可访问SQL节点,就像访问其他MySQL服务器一样,采用通常的鉴定方法和API,节点组之间的基本数据分配对用户和应用程序来说是透明的。SQL节点访问作为整体的簇数据库,而不管数据在不同数据节点或簇主机上的分布情况。
o 数据节点:
这些节点负责保存实际数据。表数据片段保存在节点组集合中,每个节点组保存表数据的不同子集。构成节点组的每个节点均保存了该节点组所负责片段的副本。目前,1个簇能支持总数为48的数据节点。
1个以上的节点能共存于单台机器上(事实上,能够在一台机器上设置完成的簇,但在生产环境下几乎没人会这样做)。请记住,使用MySQL簇时,术语“主机”指的是簇的物理部件,而“节点”指的是逻辑或功能部件(即进程),这很有帮助。
关于过时术语的注释:在MySQL簇文档的早期版本中,数据节点有时也称为“数据库节点”、“DB节点”、或偶尔使用的“存储节点”。此外,SQL节点有时也称为“客户端节点”或“API节点”。为了将混淆降至最低,这类早期术语已被放弃,为此,应避免使用它们。
· 节点组:
数据节点的集合。位于节点组内的所有数据节点包含相同的数据(片段),而且单个组内的所有节点应位于不同的主机上。能够对哪个节点术语哪个节点组进行控制。
· 节点失败:
MySQL簇并不仅取决于构成构成簇的任一节点的功能,如果1个或多个节点失败,簇仍能运行。给定簇能容忍的失败节点的准确数目取决于节点的数目和簇的配置。
· 节点重启:
重启失败簇节点的进程。
· 首次节点重启:
不与其文件系统一起启动簇节点的进程。有时用于软件升级或其他特殊场合。
· 系统崩溃(或系统失败):
当很多簇节点失败并无法保证簇的状态时,就会出现该情况。
· 系统重启:
重启簇并根据磁盘日志和检查点重新初始化簇状态的进程。在簇的计划关闭或非计划关闭后,通常需要执行该进程。
· 片段:
数据库表的一部分,在NDB存储引擎中,将表分为众多片段,并以片段方式保存。片段有时也称为“分区”,但“片段”是更可取的术语。在MySQL簇中,对表进行了片段化处理,从而简化了机器和节点间的负载平衡。
· 副本:
在NDB存储引擎下,每个表片段均有多个副本,这些副本保存在其他数据节点上,以提供冗余性。目前,每片段最多有4个副本。
· 传输器:
提供节点间数据传输的协议。MySQL簇目前提供了四种不同的传输器连接:
o TCP/IP(本地)
当然,这是广为人知的网络协议,它是Internet上HTTP、FTP等的基础。
o TCP/IP(远程)
同上,但用于远程通信。
o SCI
SCI(规模可扩展的计算机连接接口)是一种高速协议,由于构建多处理器系统和并行处理应用程序。与MySQL簇一起使用SCI时,需要专门的硬件,具体讨论请参见17.7.1节,“配置MySQL簇以使用SCI套接字”。关于SCI的基本介绍,请参见dolphinics.com上的文章。
o SHM
Unix风格共享内存(SHM)段。在任何支持的场合下,将自动使用SHM来连接运行在相同主机上的节点。要想了解这方面的更多信息,请参见关于shmop(2)的Unix手册页。
注释:簇传输器是簇内部的。使用MySQL簇的应用程序与SQL节点进行通信,就像与其他版本的MySQL服务器进行通信一样(通过TCP/IP、或使用Unix套接字、或Windows命名管道)。可以使用标准的MySQL API发出查询并检索结果。
· NDB:
它是网络数据库(Network Database)的缩写,而且指的是用于启用MySQL簇的存储引擎。NDB存储引擎支持所有通常的MySQL列类型和SQL语句,而且是ACID兼容的。该引擎还提供了对事务的完整支持(提交和回滚)。
· 无共享体系结构:
用于MySQL簇的理想体系结构。在真正的无共享设置下,每个节点运行在单独的主机上。这类安排的优点在于,单个主机或节点不会造成单点故障,也不会成为系统整体的性能瓶颈。
· 内存中存储:
保存在每个数据节点中的数据均保存在节点宿主计算机的内存中。对于簇中的每个数据节点,必须提供足够的RAM,所需的RAM量为:数据库的大小乘以副本数目,然后除以数据节点的数目。因此,如果数据库占用1GB的内存,而且你打算设置具有4个副本和8个数据节点的簇,每节点所需的最小内存为500 MB。注意,还应加上操作系统所需的内存以及运行在主机上的应用程序所需的内存。
· 表:
与关联数据库下的通常情况一样,术语“表”指的是具有等同结构的记录的集合。在MySQL簇中,数据库表以片段集合的方式保存在数据节点中,并将每个片段复制到额外的数据节点上。复制相同片段或片段集合的数据节点集合称为节点组。
· 簇程序:
它们是命令行程序,用于运行、配置和管理MySQL簇。它们包括两种服务器端口监督程序:
o ndbd:
数据节点端口监督程序(运行数据节点进程)。
o ndb_mgmd:
管理服务器端口监督程序(运行管理服务器进程)。
以及客户端程序:
o ndb_mgm:
管理客户端(为执行管理命令提供了1个界面)。
o ndb_waiter:
用于验证簇中所有节点的状态。
o ndb_restore:
从备份中恢复簇数据。
关于这些程序及其用法的更多信息,请参见17.5节,“MySQL簇中的进程管理”。
· 事件日志:
MySQL簇按照类别(启动、停止、错误、检查点等)、优先级和严重级别来记录事件。关于所有可通报事件的完整列表,请参见17.6.3节,“MySQL簇中生成的事件报告”。事件日志具有两种类型:
o 簇日志:
为作为整体的簇记录所有所需的、值得记录的事件。
o 节点日志:
为每个单独节点保存的单独日志。
在正常情况下,仅需保存和检查簇日志,这通常已足够。节点日志仅用于应用程序开发和调试目的。