一、MySQL集群介绍

MySQL集群是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的集群。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

image

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 &gt; /usr/local/mysql/mysql-cluster/config.ini <&lt; EOF

[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 <&lt; EOF

[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、其它测试进行中………..