服务器安装配置和网络连接
硬件配置:
CPU:intel 5430*2
内存:8G
(
以下为所有服务器各操作一遍)
安装:
将所有服务器安装CentOS 5.2,选择下面的包:
Clustering
Storage Clustering
mysql
不需要安装,但perl-mysql-xxx的所有包需要安装
开发工具包和类库
sshd
服务
SElinux ==>disable
语言支持包不安装,默认美国英语
设定主机名:
Vi /etc/sysconfig/network
Hostname=xxx
:wq
检查主机名:
Uname -a
必须和上表中的一一对应。否则有问题。
Vi /etc/hosts
Sql3 192.168.1.251
Sql4 192.168.1.252
mysql
集群的安装中安装的是MySQL-Cluster6.2.15
251
252
[root@sql4 mysql-cluster6.2.15]# rpm -aq | grep MySQL
MySQL-Cluster-gpl-shared-6.2.15-0.rhel5
MySQL-Cluster-gpl-extra-6.2.15-0.rhel5
MySQL-Cluster-gpl-devel-6.2.15-0.rhel5
MySQL-Cluster-gpl-storage-6.2.15-0.rhel5
MySQL-Cluster-gpl-tools-6.2.15-0.rhel5
MySQL-Cluster-gpl-server-6.2.15-0.rhel5
MySQL-Cluster-gpl-management-6.2.15-0.rhel5
MySQL-Cluster-gpl-client-6.2.15-0.rhel5
[root@sql4 mysql-cluster6.2.15]# 
在服务器上安装以上包,在安装的过程中如果缺少包或者库,采用:
yum install xxxx 
自行安装。
建立目录:
#mkdir /var/lib/mysql-cluster -p
[root@ndb1 mysql-cluster]# vi /var/lib/mysql-cluster/config.ini 
#vi /var/lib/mysql-cluster/config.ini
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=2048M
IndexMemory=1024M
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
DataDir= /var/lib/mysql-cluster
[TCP DEFAULT]
# Section for the cluster management node
[NDB_MGMD]
# IP address of the management node (this system)
ID=1
HostName=192.168.1.251
[NDB_MGMD]
# IP address of the management node (this system)
ID=2
HostName=192.168.1.252
# Section for the storage nodes
[NDBD]
ID=3
# IP address of the first storage node
HostName=192.168.1.251
#DataDir= /var/lib/mysql-cluster
[NDBD]
ID=4
# IP address of the second storage node
HostName=192.168.1.252
#DataDir=/var/lib/mysql-cluster
# one [MYSQLD] per storage node
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
[MYSQLD]
以下在mysql API 上操作(这里,我设定了API,以后可以随时加入)
239
240
vi /etc/my.cnf
[mysqld]
default-storage-engine=ndbcluster 
log=queryLog
log-slow-queries=showquerylog
#NDBCLUSTER
ndbcluster
ndb-connectstring = 192.168.1.251,192.168.1.252
[ndb_mgm]
connect-string = 192.168.1.251,192.168.1.252
[ndbd]
connect-string = 192.168.1.251,192.168.1.252
[mysql_cluster]
ndb-connectstring= 192.168.1.251,192.168.1.252
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
保存退出后,启动管理节点Server1为:
# ndb_mgmd –ndb_nodeid=1
启动管理节点Server2为:
# ndb_mgmd –ndb_nodeid=2
:在启动时有一个警告提示
Cluster configuration warning:
arbitrator with id 1 and db node with id 3 on same host 192.168.1.111
arbitrator with id 2 and db node with id 4 on same host 192.168.1.110
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
说节点1324arbitrator一样,可能引起整个集群失败。(可以不用放在心上)
四、初始化集群
Server1
# ndbd –nodeid=3 –initial
Server2
# ndbd –nodeid=4 –iniitial
注:只有在第一次启动ndbd时或者对config.ini进行改动后才需要使用–initial参数!

[root@sql3 ~]# ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.251:1186
Cluster Configuration
---------------------
[ndbd(NDB)]     2 node(s)
id=3    @192.168.1.251  (mysql-5.1.23 ndb-6.2.15, Nodegroup: 0, Master)
id=4    @192.168.1.252  (mysql-5.1.23 ndb-6.2.15, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1    @192.168.1.251  (mysql-5.1.23 ndb-6.2.15)
id=2    @192.168.1.252  (mysql-5.1.23 ndb-6.2.15)
[mysqld(API)]   7 node(s)
id=5    @192.168.1.252  (mysql-5.1.23 ndb-6.2.15)
id=6    @192.168.1.251  (mysql-5.1.23 ndb-6.2.15)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
id=10 (not connected, accepting connect from any host)
id=11 (not connected, accepting connect from any host)
ndb_mgm> 
251/252
vi /etc/rc.local
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
OK
,到此mysql cluster 配置完成。
ok
,可以测试了:
Server1 
# /usr/local/mysql/bin/mysql -u root -p
>create database aa;
> use aa;
> CREATE TABLE ctest (i INT) 

> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
应该可以看到1 row returned信息(返回数值1)。
如果上述正常,则换到Server2,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。
如果都没有问题,那么恭喜成功!
六、破坏性测试
Server1Server2的网线拔掉(即ifconfig eth0 down),观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。
注意:在未对集群做任何读写操作前,此测试结果无效,因为,集群初始后只在/var/lib/mysql-cluster/下建了几个空目录,还没有正常协同工作,会出现整个所有存储(ndbd)节点关闭.
也可以这样测试:在Server1Server2上:
# ps aux | grep ndbd
将会看到所有ndbd进程信息:
root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd
然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的:
# kill -9 5578 5579
之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。
测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:
# ndbd –ndb_nodeid=
此存储节点的id
注意!前面说过了,此时是不用加–inital参数的!
至此,MySQL双机集群就配置完成了!