1、MySQL Cluster的架构
从上图可以看出,MySQL Cluster按照节点类型可以分为3部分。
(一)管理节点
顾名思义,管理节点用来对其他节点进行管理。实际操作中,是通过对一个叫作config.ini的配置文件进行维护而起到管理的作用。该文件可以用来配置有很多需要维护的副本、需要在每个数据节点上为数据和索引分配多少内存、数据节点的位置、在每个数据节点上保存数据的磁盘位置、SQL节点的位置等信息。管理节点只能有一个,配置要求不高。
(二)SQL节点
SQL节点可以理解为应用和数据节点之间的一个桥梁。应用不能直接访问数据节点,只能先访问SQL节点,然后SQL节点再去访问数据节点来返回数据。Cluster中可以有多个SQL节点,通过每个SQL节点查询到的数据都是一致的,通常来说,SQL节点越多,分配到每个SQL节点的负载就越小,系统的整体性能就越好。
(三)数据节点
数据节点用来存放Cluster中的数据,可以有多个数据节点。每个数据节点可以有多个镜像节点。任何一个数据节点发生故障,只要它的镜像节点正常,Cluster就可以正常运行。
这3种逻辑上不同的节点物理上可以存放在不同的服务器上,也可以在同一台服务器上。
通过架构中各个节点的介绍,可以总结一下MySQL Cluster的访问过程:前台应用一定的负载均衡算法将对数据库的访问分散到不同的SQL节点上,然后SQL节点对数据节点进行数据访问并从数据节点返回结果,最后SQL节点将收到的结果返回给前台应用。而管理节点并不参与访问过程,它只用来对SQL节点和数据节点进行配置管理。
2、MySQL Cluster的配置
节点配置如下图所示:
由于硬件环境限制,我们将管理节点、一个SQL节点和一个数据节点放在一台服务器(192.168.7.187)上;将另一个SQL节点和一个数据库节点放在另外一台服务器(192.168.7.55)上。
2.1、MySQL Cluster的版本支持
对于RPM安装包,通常只下载Server和Client包就可满足大多数应用。但是,Server包默认是不包括Cluster组件的,为了支持Cluster功能,还需要单独下载Cluster相关包。
通常,对于SQL节点和数据节点,除了必须下载的Server包外,还需要下载Cluster storage engine包。如果是管理节点,则不用下载Server包,但是需要下载Client包,此外还需要下载Cluster storage engine management、Cluster storage engine basic tools和Cluster storage engine extra tools3个管理工具包。这3个工具包分别提供了Mysql Cluster管理服务器(ndb_mgmd)、客户端管理工具(最重要的是ndb_mgm)、额外的集群测试和监控工具。其中,前两个包是必须的,最后一个包没有也可以,不会影响Cluster的正常运行和管理。
对于源码包,在编译时,务必使用“--with-ndbcluster”选项,使得编译后的二进制包支持Cluster。
2.2、管理节点配置步骤
MySQL Cluster安装完毕后,首先来配置管理节点。管理节点的配置很简单,但它是Cluster配置过程中最关键的一步。具体操作如下:
(1)在服务器192.168.7.187的/home/zzx2/下创建目录mysql-cluster,并在目录中创建配置文件config.ini。
(2)根据这里的测试集群环境,config.ini文件配置如下:
在上面的配置文件中,包括很多的组,组名用“[]”括起来,这里我们最关心的是3类节点组额配置,分别定义如下:
(1)[NDB_MGMD]:表示管理节点的配置,只能有一个。
(2)[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用在写这些选项,只能有一个。
(3)[NDBD]:表示每个数据节点的配置,可以有多个。
(4)[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址;也可以不用写IP地址,只保留一个空节点,表示任意一个IP地址都可以进行访问,此节点的个数表明了可以用来连接数据节点的SQL节点总数。
每个节点都要有一个独立的id号,可以手工填写,比如“id=2”,也可以不写,系统会按照配置文件的填写顺序自动分配。
2.3、SQL节点和数据节点的配置
SQL节点和数据节点的配置非常简单,只需要在对MySQL的配置文件(my.cnf)中增加如下内容即可:
SQL节点和数据节点的不同之处在于数据节点只需要配置上选项即可,SQL节点还需要配置MySQL服务器的其他选项。
网友评论