《mysql_cluster双机集群.doc》由会员分享,可在线阅读,更多相关《mysql_cluster双机集群.doc(6页珍藏版)》请在金锄头文库上搜索。
1、mysql cluster双机集群一、介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行。加下后续的(keepalived+lvs+mysql cluster文档),可以实现Mysql双机的高可用及负载均衡。安装环境及软件包:vmware workstation 5.5.3mysql-5.2.3-falcon-alpha.tar.gzgentoo 2006.1Server1: 192.168.1.111Server2: 192.168.1.110二、在Server1和Server2上安装MySQL以下步骤需要在Server1和S
2、erver2上各做一次# 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
3、-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=mysq
4、l三、安装并配置节点以下步骤需要在Server1和Server2上各做一次1.配置管理节点配置文件:# mkdir /var/lib/mysql-cluster# cd /var/lib/mysql-cluster# vi config.ini在config.ini中添加如下内容:ndbd defaultNoOfReplicas= 2MaxNoOfConcurrentOperations= 10000DataMemory= 80MIndexMemory= 24MTimeBetweenWatchDogCheck= 30000DataDir= /var/lib/mysql-clusterMaxNo
5、OfOrderedIndexes= 512StartPartialTimeout=100StartPartitionedTimeout=100ArbitrationTimeout=5000TransactionDeadlockDetectionTimeout=5000HeartbeatIntervalDbDb=5000StopOnError=0ndb_mgmd defaultDataDir= /var/lib/mysql-clusterndb_mgmdId=1HostName= 192.168.1.111ndb_mgmdId=2HostName= 192.168.1.110ndbdId= 3H
6、ostName= 192.168.1.111ndbdId= 4HostName= 192.168.1.110mysqldArbitrationRank=2 (非常重要,全靠有它,才可以形成仲裁竞争,从而当另一个机子当了时,此机还可以有知道partion完整的节点)mysqldArbitrationRank=2tcp defaultPortNumber= 631322.配置通用f文件,mysqld及ndbd,ndb_mgmd均使用此文件.# vi /etc/f在f中添加如下内容:mysqlddefault-storage-engine=ndbcluster 避免在sql语句中还要加入ENGINE
7、=NDBCLUSTER。ndbclusterndb-connectstring=192.168.1.111,192.168.1.110ndbdconnect-string=192.168.1.111,192.168.1.110ndb_mgmconnect-string=192.168.1.111,192.168.1.110ndb_mgmdconfig-file=/var/lib/mysql-cluster/config.inimysql_clusterndb-connectstring= 192.168.1.111,192.168.1.110保存退出后,启动管理节点Server1为:# ndb
8、_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
9、 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 Clust
10、er - Management Client -ndb_mgm showConnected to Management Server at: 192.168.1.111:1186Cluster 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 1
11、92.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=mysq
12、l &在Server2 中:#mysqld_safe -ndb_nodeid=6 -user=mysql ndb_mgm -e show信息如下:Connected to Management Server at: 192.168.1.111:1186Cluster 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)i
13、d=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 -pcreate database aa; use aa; CREATE TABLE ctest (i INT) ; INSERT INTO ctest () VALU
14、ES (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 ndbdroot 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 n