LINUX中MySQL集群的配置

MYSQL簇的简要介绍

MySQL簇由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB簇的数据节点,管理服务器,以及专门的数据访问程序。所有这些程序一起构成了MYSQL簇。将数据保存到NDB簇存储引擎中,表将保存在数据节点内。能够从簇中所有其他MYSQL服务器直接访问这些表。因此,如果在簇内的任何数据发生改变,所有查询该数据的其他MYSQL服务器能立刻发现这种变化。它是MYSQL适合于分布计算环境的高实用、高冗余版本。它采用了NDB簇存储引擎,允许在1个簇中运行多个MYSQL服务器。
MYSQL簇允许在无共享的系统中部署“内存中”数据库的簇。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。由于每个组件有自己的内存和磁盘,所以不存在单点故障。MYSQL簇的到来,MYSQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的簇数据管理。

MYSQL簇有三类簇节点分别是:
管理节点(MGM)节点:此类节点作用是管理MYSQL簇内的其他节点,提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前先启动这类节点
数据节点:该类节点用于保存簇的数据。数据节点的数目与副本的数目相关,是片段的倍数。数据节点是用命令ndbd启动。
SQL节点:这是用来访问簇数据的节点。对于MYSQL簇,客户端节点是使用NDB簇存储引擎的传统MYSQL服务器。


MYSQL簇的安装配置

1、MYSQL簇内各节点的分配情况

管理节点(MGM) 192.68.1.10
SQL节点 192.168.1.10
192.168.1.20
192.168.1.30
数据节点1(NDBD) 192.168.1.20
数据节点2(NDBD) 192.168.1.30

2、准备MYSQL簇的安装包
这里我们可选择源码编译安装也可选择二进制包安装
这里我选择二进制包安装:准备如下包
mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz
将此包放在/usr/local目录下

首先在三台虚拟机上安装MYSQL

cd /usr/local
tar zxvf mysql-cluster-gpl-7.2.5-linux2.6-x86_64.tar.gz
ln -sv mysql-cluster-gpl-7.2.5-linux2.6-x86_64 mysql
groupadd mysql
useradd -g mysql mysql
cd mysql
scripts/mysql_install_db --user=mysql
chown -R mysql:mysql .
cp support-files/my-medium.cnf /etc/my.cnf
vim /etc/my.cnf 
在/etc/my.cnf文件中找到[mysqld]段,在此段中添加如下两行
ndbcluster
ndb-connectstring=192.168.1.10
然后在文件的尾部添加如下几行:
[ndbd]
connect-string=192.168.1.10
[ndb_mgm]
connect-string=192.168.1.10
[ndb_mgmd]
config-file=/var/lib/mysql-cluster
修改完毕后保存退出!
mkdir /var/lib/mysql-cluster
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
vim /etc/profile
在此文件中找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL行,在此行前面添加如下一行:
PATH=$PATH:/usr/local/mysql/bin
. /etc/profile   #重读下此文件
echo $PATH       #查看是否有mysql的命令路径
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin

此时在管理节点
cd /var/lib/mysql-cluster
touch config.ini
vim config.ini
添加如下行
[NDBD DEFAULT]
NoOFReplicas=2
DataDir=/var/lib/mysql-cluster
[NDB_MGMD]
Hostname=192.168.1.10
DataDir=/var/lib/mysql-cluster
[NDBD]
Hostname=192.168.1.30
[NDBD]
Hostname=192.168.1.20
[MYSQLD]
hostname=192.168.1.10
[MYSQLD]
hostname=192.168.1.20
[MYSQLD]
hostname=192.168.1.30

到此安装配置基本上完成

启动MYSQL簇

首先启动管理节点
在启动之前先把防火墙关闭 如果不关闭有可能数据节点连接不上管理节点
ndb_mgmd  -f /var/lib/mysql-cluster/config.ini
service mysqld start

然后在启动数据节点
ndbd --initial #如果是第一次启动ndbd使用--initial参数,以后启动就不需要
service mysqld start

所有节点启动完毕后我们在管理节点进行查看会显示如下信息

[root@localhost ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.10:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 (not connected, accepting connect from 192.168.1.30)
id=3 @192.168.1.20  (mysql-5.5.20 ndb-7.2.5, starting, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.1.10  (mysql-5.5.20 ndb-7.2.5)

[mysqld(API)] 3 node(s)
id=4 (not connected, accepting connect from any host)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)

测试

在任何一个节点创建一个表或库在其它节点查看
我在任何一个SQL节点登录MYSQL,创建了一个wang库在其它两个SQL节点查看
[root@localhost ~]# mysql
mysql> create database wang;
Query OK, 1 row affected (0.57 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| test               |
| wang               |
+--------------------+
在其它节点查看是否有wang这个库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ndbinfo            |
| performance_schema |
| test               |
| wang               |
+--------------------+
6 rows in set (0.30 sec)
当你看到一样那就说明我们MYSQL集群搭建成功

注意事项
1、mysql cluste 在启动过程中必须提前启动管理节点服务器,管理节点启动成功后在启动其它节点
2、关闭整个集群的时候最好最后关闭管理节点