一、介绍: 

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.119,192.168.1.120]上创建数据库且插入数据并验证

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

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


转载于:https://blog.51cto.com/3160997/1104851