一、MySQL集群介绍
MySQL集群是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的集群。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
Mysql 集群由三种不同节点组成,每一种节点提供特殊的服务,这三类节点分别是:
管理(MGM)节点:这类节点的作用是管理MySQL簇内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令ndb_mgmd启动的。
数据节点:这类节点用于保存簇的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。没有必要有一个以上的副本。数据节点是用命令ndbd启动的。
SQL节点:这是用来访问簇数据的节点。对于MySQL簇,客户端节点是使用NDB簇存储引擎的传统MySQL服务器。典型情况下,SQL节点是使用命令mysqld –ndbcluster启动的,或将ndbcluster添加到my.cnf后使用mysqld启动。
二、实验环境
一个管理节点、二个数据节点、二个SQL节点。系统全部使用CentOS5.5 x64,最小化安装。名称
IP
Mgm1
172.20.4.17
Ndb1
172.20.4.13
Ndb2
172.20.4.14
Mysql1
172.20.4.11
Mysql2
172.20.4.12
Mysql的版本为mysql-cluster-gpl-7.1.10-linux-x86_64-glibc23.tar.gz 。
三、安装配置步骤
1、存储节点和SQL节点安装
在mysql1、mysql2、ndb1和ndb2上都执行以下操作。
# groupadd mysql && useradd -g mysql mysql
# tar -zxvf /usr/local/src/mysql-cluster-gpl-7.1.9a-linux-i686-glibc23.tar.gz -C /usr/local/ && mv /usr/local/mysql-cluster-gpl-7.1.9a-linux-i686-glibc23 /usr/local/mysql
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
# chown -R root /usr/local/mysql && chown -R mysql /usr/local/mysql/data && chgrp -R mysql /usr/local/mysql
2、管理节点安装
在管理节点mgm1上执行如下命令
# scp mysql1.cluster:/usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ && chmod +x /usr/local/bin/ndb_mgm*
3、配置管理节点
#mkdir –p /usr/local/mysql/mysql-cluster
#cat > /usr/local/mysql/mysql-cluster/config.ini
[NDBD DEFAULT]
NoOfReplicas=2 #副本数
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=172.20.4.17
# Storage Engines
[NDBD]
HostName=172.20.4.13
DataDir=/mysqll/mysql-cluster #数据存储目录
[NDBD]
HostName=172.20.4.14
DataDir=/mysql/mysql-cluster
[MYSQLD]
[MYSQLD]
4、配置存储和SQL节点
cat > /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
ndbcluster
ndb-connectstring=172.20.4.17
[mysql_cluster]
ndb-connectstring=172.20.4.17
EOF
5、启动mysql集群
? 先启动管理节点 #ndb_mgmd –f /usr/local/mysql/mysql-cluster/config.ini
? 再启动存储节点 #/usr/local/mysql/bin/ndbd –initial
PS:仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。
? 最后启动SQL节点 #cd /usr/local/mysql && bin/mysqld_safe –user=mysql &
? 在管理节点服务器mgm1上查看集群各节点状况
[root@mgm1 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @172.20.4.13 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0, Master)
id=3 @172.20.4.14 (mysql-5.1.51 ndb-7.1.10, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @172.20.4.17 (mysql-5.1.51 ndb-7.1.10)
[mysqld(API)] 2 node(s)
id=4 @172.20.4.12 (mysql-5.1.51 ndb-7.1.10)
id=5 @172.20.4.11 (mysql-5.1.51 ndb-7.1.10)
说明:id是自动成生的,可以在config.ini文件中指定。
三、测试
1、在mysql1上登录mysql服务器新建一个数据库ctest,在mysql2上登录mysql服务器也能看到数据库已创建。
2、在mysql2上登录mysql服务器,进入ctest新建表,同样在mysql1上也能看到。
PS:新建表时需要在末尾指定一下表的存储引擎。
CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
3、其它测试进行中………..