Chinaunix首页 | 论坛 | 博客
  • 博客访问: 27935
  • 博文数量: 8
  • 博客积分: 1471
  • 博客等级: 上尉
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 21:54
文章分类

全部博文(8)

文章存档

2011年(1)

2010年(5)

2009年(2)

分类: Mysql/postgreSQL

2009-09-20 10:39:15

双机Mysql-Cluster配置
服务器安装配置和网络连接
硬件配置:
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双机集群就配置完成了!
 
 
 
 
 
阅读(573) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~