一、介绍:
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节点能看到,其它节点不能同步。
如果有什么问题,希望能与大家共同探讨!