« 上一篇下一篇 »

NDB Clister 存储引擎简介

NDB存储引擎也叫NDB Clister 存储引擎,主要用于MySQL Cluster分布式集群环境,Cluster是MySQL从5.0版本才开始提供新功能,本文并不只是介绍NDB存储引擎,因为离开了MySQL Cluster整个环境,NDB存储引擎也将失去太多意义

    简单地说,MySQL Cluster就是在无共享存储设备的情况下实现的一种内存数据库Cluster环境,主要是通过NDB Clister 存储引擎来实现的。

    一般来说,一个MySQL Cluster的环境主要由以下三部分组成。

    1、负责管理各个节点的Manage节点主机
   
    管理节点负责整个Cluster急群众各个节点的管理工作,包括集群的配置,启动关闭各节点,以及实施数据的备份恢复等。管理节点会获取整个Cluster环境中各节点的状态和错误信息,并且将各Cluster集群中各个节点的信息反馈给整个集群中其他的所有节点。由于管理节点上保存在整个Cluster环境的配置,同时担任子集群中各节点的基本沟通工作,所以它必须是最先被启动的节点。

    2、SQL层的SQL服务器节点,也就是我们常说的MySQL Server
   
    主要负责实现一个数据库在存储层之上的所有事情,比如连接管理,query优化和响应,cache管理等,只有存储层的工作会交给NDB数据节点去处理。也就是说,在纯粹的MySQL Cluster环境中的SQL节点,可以被认为是一个不需要提供任何存储引擎的SQL服务器,因为它的存储引擎由Cluster环境中的NDB节点来担任。所以,SQL层各SQL服务器的启动与普通的MySQL启动有一定的区别,必须添加ndbcluster项,可以添加在my.cnf配置文件中,也可以通过启动命令行来指定。

    3、Storage层的NDB数据节点,也就是上面说的NDB Cluster

    NDB是一个内存式存储引擎,也就是说,它会将所有的数据和索引数据都加载到内存中,但也会将数据持久化到存储设备上。不过,最新版本已经支持非索引字段数据不用全部加载到内存种类,这对于有些数据量太大或基于成本考虑而没有足够内存空间来存放所有数据的用户来说,这的确是一个大好消息。

    NDB节点主要是实现底层数据存储的功能,保存Cluster的数据。每一个NDB节点保存完整数据的一部分(或者一份完整的数据,视节点数目和配置而定),在MySQL Cluster里面叫做fragment。而每一个fragment,正常情况来讲都会在其他的主机上面有一份(或者多份)完全相同的镜像存在。这些都是通过配置来完成的,所以只要配置得当,MySQL Cluster在存储层就不会出现单点的问题。一般来说,NDB节点被组织成一个一个的NDB Group,一个NDB Group实际上就是一组存有完全相同的物理数据的NDB节点群。

« 上一篇下一篇 »