一、介绍: 

MySQL集群是一种分布式设计,目标是要达到没有任何单点故障点。因此,任何组成部分都应该拥有自己的内存和磁盘。通过这种冗余设计,MySQL声称数据的可用度可以达到99。999%。 

实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQL服务器集成。它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MySQL服务器,一个数据节点,一个管理服务器和一个专有的一个数据访问程序。它们之间的关系如下图所示:

 

二、安装 

准备:实验环境:RHEL4.6(5台) 

机器: 全部安装RHEL4.6且关闭防火墙 

软件: mysql-cluster-gpl-7.2.8-linux-i686.tar.gz 

台机器分别分配如下IP及用途: 

 IP 

Description 

192.168.1.116

Management Node 

192.168.1.117 

Data Node+Lvs+Keepalived

192.168.1.118 

Data Node+Lvs+Keepalived

192.168.1.119 

SQL Node 

192.168.1.120 

SQL Node 

本人语文水平有限,在这里我会尽量把操作步骤写的全面一些,如有问题请大家及时拍砖,大家共同研究,哦了。我们开始干活!

在安装前提示大家一下,安装完成后cluster启动的顺序,如果启动顺序不正确有可能导致cluster安装不成功。

1、启动Management节点上的ndb_mgmd

2、启动Data节点的ndbd

3、启动mql节点的mysql

一、Management节点的安装:

我们把文件安装到/usr/local/mysql

[root@lg src]# tar -zxf mysql-cluster-gpl-7.2.8-linux2.6-i686

[root@lg mysql-cluster-gpl-7.2.8-linux2.6-i686]#vim INSTALL-BINARY

INSTALL-BINARY文件里有很多行,这里我们只保留以下几行

 groupadd mysql

 useradd -r -g mysql mysql

 cd /usr/local

 ln -s /usr/src/mysql-cluster-gpl-7.2.8-linux2.6-i686  mysql

 cd mysql

 chown -R mysql .

 chgrp -R mysql .

 scripts/mysql_install_db --user=mysql

 chown -R root .

 chown -R mysql data

 cp support-files/my-medium.cnf /etc/my.cnf

 bin/mysqld_safe --user=mysql &

 cp support-files/mysql.server /etc/init.d/mysqld

[root@lg mysql-cluster-gpl-7.2.8-linux2.6-i686]#chmod 755 INSTALL-BINARY

[root@lg mysql-cluster-gpl-7.2.8-linux2.6-i686]#./INSTALL-BINARY

安装完毕后我们要配置一下config.ini 这里再启动ndb_mgmd时需要启动config.ini文件。config.ini配置文件的模版在下面的目录下

[root@lg~]cp/usr/local/mysql/mysql-test/suite/ndb/ndb_config_config.ini /usr/local/mysql/config.ini 

[root@lg mysql]# vim config.ini

[ndbd default]

NoOfReplicas= 2

OfReplicas= 2

DataMemory= 20M

IndexMemory= 1M

DataDir= /data/ #这个目录放在那里都可以,可以自己手工创建,但是记住要给权限。

[ndb_mgmd]

HostName= 192.168.1.116

DataDir= /data/

[ndbd]

Id=17

HostName= 192.168.1.117

DataDir= /data/

[ndbd]

Id=18

HostName= 192.168.1.118

DataDir=/data/

[mysqld]

Id=19

HostName=192.168.1.119

[mysqld]

Id=20

HostName=192.168.1.120

OK,这里我们已经配置完成Managemen节点。

这里要注意一下:config.Ini配置文件中Id首字母要大写且Id号不能超过100,超过100后会提示报错。

配置数据节点[192.168.1.117, 192.168.1.116]: 

数据节点只需要解压mysql-cluster,解压后配置/etc/my.cnf文件即可。

[root@lg src]# tar -zxf mysql-cluster-gpl-7.2.8-linux2.6-i686

[root@lg src]# ln -s mysql-cluster-gpl-7.2.8-linux2.6-i686/  /usr/local/mysql

[root@lg ~]# vim /etc/my.cnf 

创建/etc/my.cnf文件,内容如下 

[mysqld] 

Datadir=/data 

ndbcluster 

ndb-connectstring=192.168.1.116

[mysql_cluster] 

ndb-connectstring=192.168.1.116

配置数据节点[192.168.1.117, 192.168.1.116]: 安装步骤同上面管理节点红色部分相同,同时还要安装下这个目录下的mysql_install_db文件

[root@sunye scripts]# pwd

/usr/src/mysql-cluster-gpl-7.2.8-linux2.6-i686/scripts/

[root@sunye scripts]#./mysql_install_db --user=mysql

创建/etc/my.cnf文件,内容如下  

[mysqld] 

ndbcluster 

ndb-connectstring=192.168.1.116

[mysql_cluster] 

ndb-connectstring=192.168.1.116

到此mysql集群就已经安装完毕了

三、启动 

启动管节点[192.168.1.116]:

[root@lg mysql]# ./bin/ndb_mgmd -f /config.ini 

[root@lg mysql]# ./bin/ndb_mgm 

-- NDB Cluster -- Management Client -- 

ndb_mgm> show 

Connected to Management Server at: 192.168.1.116:1186 

Cluster Configuration 

--------------------- 

[ndbd(NDB)] 2 node(s) 

id=117 (not connected, accepting connect from 192.168.1.117

id=118(not connected, accepting connect from 192.168.1.118

[ndb_mgmd(MGM)] 1 node(s) 

id=1 @192.168.1.116 (mysql-5.5.27 ndb-7.2.8

[mysqld(API)] 2 node(s) 

id=119 (not connected, accepting connect from 192.168.1.119

id=120 (not connected, accepting connect from 192.168.1.120

我们可以看到集群的状态都还没有启动,都是not connected状态。 

启动数据节点[192.168.1.117, 192.168.1.118]:不用启动mysql。

[root@server117 ~]#cd /usr/local/mysql 

[root@server118mysql]#./bin/ndbd 

启动SQL节点[192.168.1.119,192.168.1.120]: 

[root@server119 mysql]# /etc/mysqld start

至此,所有节点已经启动完成,让我们来查看系统状态:

  [192.168.1.116] 

ndb_mgm> show 

Connected to Management Server at: localhost:1186 

Cluster Configuration 

--------------------- 

[ndbd(NDB)] 2 node(s) 

Id=117 @192.168.1.117 (mysql-5.5.27 ndb-7.2.8) , Nodegroup: 0, Master) 

id=118 @192.168.1.118 (mysql-5.5.27 ndb-7.2.8) , Nodegroup: 0) 

[ndb_mgmd(MGM)] 1 node(s) 

id=1 @192.168.1.116  (mysql-5.5.27 ndb-7.2.8

[mysqld(API)] 2 node(s) 

id=19 @192.168.1.119  (mysql-5.5.27 ndb-7.2.8

id=20 @192.168.1.120  (mysql-5.5.27 ndb-7.2.8

SQL节点[192.168.1.119192.168.1.120]上创建数据库且插入数据并验证

在这里我就不多说,但是必须注意一下创建库和创建表的时候引擎必须是ENGINE=NDBCLUSTER 否则所建立的表或者库只能在当前sql节点能看到,其它节点不能同步。

如果有什么问题,希望能与大家共同探讨!