MySQL CLUSTER 集群方案 MySQLC#CC++配置管理
(1.双机实现高可用)
一、介绍
这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行。加下后续的(keepalived+lvs+mysql
cluster文档),可以实现Mysql双机的高可用及负载均衡。
安装环境及软件包:
vmware
workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo
2006.1
Server1: 192.168.1.111
Server2:
192.168.1.110
二、在Server1和Server2上安装MySQL
以下步骤需要在Server1和Server2上各做一次
#
mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package
#
cd /tmp/package
# groupadd mysql
# useradd -g
mysql mysql
# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
# rm
-f mysql-5.2.3-falcon-alpha.tar.gz
# mv
mysql-5.2.3-falcon-alpha mysql
# cd mysql
#
./configure
–prefix=/usr –with-extra-charsets=complex
–with-plugin-ndbcluster –with-plugin-partition
–with-plugin-innobase
# make && make install
#ln -s
/usr/libexec/ndbd /usr/bin
#ln -s
/usr/libexec/ndb_mgmd /usr/bin
#ln -s
/usr/libexec/ndb_cpcd /usr/bin
#ln -s
/usr/libexec/mysqld /usr/bin
#ln -s
/usr/libexec/mysqlmanager /usr/bin
#mysql_install_db
–user=mysql
三、安装并配置节点
以下步骤需要在Server1和Server2上各做一次
1.配置管理节点配置文件:
# mkdir
/var/lib/mysql-cluster
# cd
/var/lib/mysql-cluster
# vi
config.ini
在config.ini中添加如下内容:
[ndbd
default]
NoOfReplicas=
2
MaxNoOfConcurrentOperations= 10000
DataMemory=
80M
IndexMemory=
24M
TimeBetweenWatchDogCheck=
30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes=
512
[ndb_mgmd default]
DataDir=
/var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName=
192.168.1.111
[ndb_mgmd]
Id=2
HostName= 192.168.1.110
[ndbd]
Id=
3
HostName= 192.168.1.111
[ndbd]
Id= 4
HostName=
192.168.1.110
[mysqld]
[mysqld]
[tcp
default]
PortNumber=
63132
2.配置通用my.cnf文件,mysqld及ndbd,ndb_mgmd均使用此文件.
# vi
/etc/my.cnf
在my.cnf中添加如下内容:
[mysqld]
default-storage-engine=ndbcluster
避免在sql语句中还要加入ENGINE=NDBCLUSTER。
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring=
192.168.1.111,192.168.1.110
保存退出后,启动管理节点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参数!
五、检查工作状态
在任意一台机子上启动管理终端:
#
ndb_mgm
键入show命令查看当前工作状态:(下面是一个状态输出示例)
– NDB
Cluster — Management Client –
ndb_mgm>
show
Connected to Management Server at:
192.168.1.111:1186
Cluster
Configuration
———————
[ndbd(NDB)] 2 node(s)
id=3
@192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110
(Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1
@192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version:
5.2.3)
[mysqld(API)] 2 node(s)
id=5 (not
connected, accepting
connect from any host)
id=6 (not
connected, accepting
connect from any
host)
ndb_mgm>
如果上面没有问题,现在开始加入mysqld(API):
注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL
root密码。
在Server1 中:
#mysqld_safe –ndb_nodeid=5 –user=mysql
&
在Server2 中:
#mysqld_safe –ndb_nodeid=6 –user=mysql &
#
ndb_mgm -e show
信息如下:
Connected to Management
Server at: 192.168.1.111:1186
Cluster
Configuration
———————
[ndbd(NDB)] 2 node(s)
id=3
@192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110
(Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1
@192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version:
5.2.3)
[mysqld(API)] 4 node(s)
id=5 @192.168.1.111 (Version:
5.2.3)
id=6 @192.168.1.110 (Version: 5.2.3)
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双机集群就配置完成了!
推荐阅读
-
MySQL CLUSTER(集群)系列 (2.另类在线增加节点-online hotplugin) MySQLLinux配置管理VmwareSQL Server
-
MySQL CLUSTER 集群方案 MySQLC#CC++配置管理
-
MySQL Cluster集群的初级部署教程
-
MySQL集群mysql-cluster安装
-
MySQL高可用方案之集群(Cluster)
-
【预编译二进制源码安装】MySQL Cluster 7.3.5 集群配置实例_MySQL
-
MySQL Cluster 7.2.4集群配置_MySQL
-
[转]MySQL Cluster(MySQL 集群) 初试
-
[转]MySQL Cluster(MySQL 集群) 初试
-
MySQL Cluster 7.2.4集群配置_MySQL