官方下载地址http://www.mysql.com/downloads/cluster/#downloads进入下载页面,

在下拉选项中选择Red Hat&Oracle Enterporise Linux然后下载相应软件

1

分别下载:

MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.i386.rpm

下载需要使用邮箱注册MySQL.com的账户,也可以使用以下链接:

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-clusterj-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-debuginfo-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-debuginfo-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-devel-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-devel-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-extra-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-shared-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-shared-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-test-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-test-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.i386.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.x86_64.rpm/from/http://mysql.cdpa.nsysu.edu.tw/

以上下载的软件中,属于集群软件的是:

MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm

MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm

1.1.1.2. 数据库软件

以上属于数据库服务器软件的是:

MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm

1.1.2. 环境设置 1.1.2.1. 关闭防火墙

Iptables是一个包含在绝大多数Linux发行版中的防火墙。在默认安装的RHEL中,防火墙是打开的,且随机启动,如果要关闭防火墙,可以使用以下命令:

Service iptables stop

或使用如下命令清空防火墙策略:

【命令】

Iptables –F

以上命令执行完毕之后效果只能保持到下次重启。重启后的配置就还原了,如果希望能够在重启之后还能够保持防火墙的关闭状态,可以使用以下命令:

Chkconfig –level 35 iptables off

1.1.2.2. 关闭SELinux

SELinux的全称是Security-EnhancedLinux,是由美国国家安全局NSA开发的访问控制体制。SELinux可以最大限度地保证Linux系统的安全。

在默认安装的Linux系统中,SELinux默认是开启的,配置文件是/etc/selinux/config,一般测试过程中使用“permissive”模式,这样仅会在违反SELinux规则时发出警告,然后修改规则,最后由用户觉得是否执行严格“enforcing”的策略,禁止违反规则策略的行为。规则决定SELinux的工作行为和方式,策略决定具体的安全细节如文件系统,文件一致性。在安装过程中,可以选择“激活”、“警告”或者“关闭”SELinux。默认设置为“激活”。

为了避免SELinux影响到群集功能,需要关闭SELinux系统的功能,具体操作方式如下:

1.1.2.3. 设置主机名和IP地址

按照拓扑图修改各主机的主机名和IP地址,具体对照如下:

节点名称

主机名

IP

掩码

管理节点

SQL节点

Mgmt

10.10.10.11

255.255.255.0

数据节点1

Node1

10.10.10.22

255.255.255.0

数据节点2

Node2

10.10.10.33

255.255.255.0

  2. MySQL集群的实现 2.1. 安装阶段 2.1.1. 管理节点-MANAGEMENT NODE

在管理节点上只需要安装管理节点软件MySQL-Cluster-gpl-management-*.rpm即可,

依次执行:

Rpm –Uvh MySQL-Cluster-gpl-management-7.1.4b-1.rhel5.i386.rpm

Rpm –Uvh MySQL-Cluster-gpl-tools-7.1.4b-1.rhel5.i386.rpm

2.1.2. SQL节点-SQLNODE

在管理节点上只需要安装管理节点软件MySQL-Cluster-gpl-server-*.rpm即可执行:,但是为了便于后期的调试和本地服务器管理,可以将client工具包一起装上

Rpm –Uvh MySQL-Cluster-gpl-server-7.1.4b-1.rhel5.i386.rpm

Rpm –Uvh MySQL-Cluster-gpl-client-7.1.4b-1.rhel5.i386.rpm

2.1.3. 数据节点-DATANODE

数据节点只需要安装数据引擎包MySQL-Cluster-gpl-storage-*.Rpm即可。

执行:

Rpm –Uvh MySQL-Cluster-gpl-storage-7.1.4b-1.rhel5.i386.rpm

2.1.4. 安装阶段注意事项

如果原先安装过单机版MYSQL软件包,一定要先进行卸载,否则会出现冲突。

2.2. 配置阶段 2.2.1. 管理节点-MANAGEMENTNODE

管理节点的配置文件包含两部分,分别是config.ini和my.cnf,本例中分别配置如下

群集配置文件/var/lib/mysql/mysql-cluster/config.ini

新建该文件内容如下。

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

[tcp default]

portnumber=2202

[ndb_mgmd]

hostname=10.10.10.11

datadir=/var/lib/mysql-cluster

[ndbd]

hostname=10.10.10.22

datadir=/usr/local/mysql/data

[ndbd]

hostname=10.10.10.33

datadir=/usr/local/mysql/data

[mysqld]

hostname=10.10.10.11

节点配置文件/etc/my.cnf

新建该文件内容如下。

[mysqld]

ndbcluster

ndb-connectstring=10.10.10.11

default-storage-engine=NDBCLUSTER

[mysql_cluster]

ndb-connectstring=10.10.10.11

2.2.2. SQL节点-SQLNODE 2.2.2.1. 初始化MySQL数据库

再安装完数据库后会提示改数据库登录密码

设置数据库密码为‘123456’执行:

Mysqladmin –u root password '123456'

2.2.2.2. 配置配置文件

SQL节点的主要配置文件是/etc/my.cnf

[mysqld]

ndbcluster

ndb-connectstring=10.10.10.11

default-storage-engine=NDBCLUSTER

skip-name-resolve

[mysql_cluster]

ndb-connectstring=10.10.10.11

2.2.3. 数据节点-DATANODE

节点配置文件/etc/my.cnf

新建该文件内容如下。

[mysqld]

ndbcluster

ndb-connectstring=10.10.10.11

default-storage-engine=NDBCLUSTER

[mysql_cluster]

ndb-connectstring=10.10.10.11

2.2.4. 配置阶段注意事项

在/ect/my.cnf文件中default-storage-engine=NDBCLUSTER表示是默认数据库引擎,若不加这句话,在数据库建表语句后面都必须加上ENGINE=NDBCLUSTER;

2.3. 启动阶段 2.3.1. 管理节点-MANAGEMENTNODE

输入命令ndb_mgmd –f /var/lib/mysql-cluster/config.ini

自启动设置

需要每次开机自动启动管理节点服务,按照如下步骤执行

【命令】

2.3.2. SQL节点-SQLNODE

输入命令service mysql restart

如果使用的是RPM包安装的,mysql服务会自动启动,可以使用如下命令进行检查:

【命令】

Chkconfig –list mysql

如果是使用源代码进行安装的,可以使用如下命令使之自启动:

【命令】

Echo /usr/local/mysql/mysqld_safe –user=mysql& >> /etc/rc.d/rc.local

2.3.3. 数据节点-DATANODE

输入命令ndbd(注意第一次启动时输入:ndbd--initial)

 

2.4. 群集启动状况检查

所有群集节点都启动之后,可以使用如下命令查看群集状态

【命令】

ndb_mgm –e show

2

上图数据节点的启动状态都在启动中。

3

上图两个节点都已启动。

3. 群集数据库的创建和使用 3.1. 建立数据库

在管理节点上启动mysql服务:

进入mysql数据库:

输入mysql–uroot–p

输入密码123456进入数据库

创建数据库

image

建立一个表做测试

image

上述操作可以看到数据能查询出来;

3.2. 连接到数据库

在数据库中输入下面两行命令实现数据库远程访问功能。

mysql>grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

QueryOK,0 rows affected (0.00sec)

mysql>flush privileges;

QueryOK,0 rows affected (0.00sec)

4. 群集功能验证 4.1. 群集功能目标

在集群正常运行过程,当一个数据节点断掉后不影响数据库的正常使用。断掉的节点启动后能自动完成数据同步。

4.2. 群集故障转移

模拟数据node2断掉后集群功能的测试及数据查询测试

拔掉数据node2(数据节点2)的网线。

进去管理节点查看集群状态

image

Node2节点已经不能连接了。然后进去mysql再次查询:

image

数据成功查询得到。

下面模拟两个数据节点同时都断掉后集群功能测试及数据查询测试

我们将node1、node2的网线全部拔掉。

查看集群显示情况

image

上述可以看到数据节点都没有连接了。

下面进行数据查询

image

可以看到数据无法查询,并出项了相应的集群错误提示。

4.3. 群集故障节点恢复

恢复一个数据节点后集群功能及数据查询功能的测试

插上node1(ip为10.10.10.22)数据节点的网线并重启该机上的ndbd。

image

进入任意一台数据节点机器输入:ndbd启动数据节点服务。

image

进去管理节点查看集群状态

image

上图显示已有一个节点进入启动状态。待启动完成后进去mysql再次查询:

数据成功查询得到。验证了集群故障恢复后数据读写恢复正常。

4.4. 集群故障过程中产生的数据,节点回复后的数据同步。

测试目的:

在集群中一个节点断掉到它重新启动这段时间的所有数据操作,会在该节点启动后自动完成数据同步。

步骤:

断掉数据节点1并在数据库服务中执行相应的数据插入操作。

 image

断掉节点1后查看集群服务。

image

显示数据库中数据情况:

image

另一个数据节点并执行ndbd命令:

image

然后断掉数据节点2。查看集群状态:

image

验收数据是否已同步,进如mysql数据库服务进行数据查询。

image

数据仍能查询到,说明在故障恢复后mysql集群完成了数据同步。