服务器安装配置和网络连接
硬件配置:
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 上操作(这里,我设定了 7 个 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.
说节点 1 和 3 , 2 和 4 的 arbitrator 一样,可能引起整个集群失败。(可以不用放在心上)
四、初始化集群
在 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 观察是否工作正常。
如果都没有问题,那么恭喜成功!
六、破坏性测试
将 Server1 或 Server2 的网线拔掉(即 ifconfig eth0 down) ,观察另外一台集群服务器工作是否正常(可以使用 SELECT 查询测试)。测试完毕后,重新插入网线即可。
注意:在未对集群做任何读写操作前,此测试结果无效,因为,集群初始后只在 /var/lib/mysql-cluster/ 下建了几个空目录,还没有正常协同工作,会出现整个所有存储 (ndbd) 节点关闭 .
也可以这样测试:在 Server1 或 Server2 上:
# 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 双机集群就配置完成了!
本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/209833,如需转载请自行联系原作者