MySQL的使用受到广大技术人员的喜爱,它的简便操作,低成本和高速运转成为它快速普及的基础。那么针对这个软件的负载均衡设置是接下来我们重点介绍的内容。当然在安装之前我们需要吧环境和系统都介绍一下。
一、安装明细
测试环境:
Server1:ndbd 192.168.0.11
Server2:ndbd 192.168.0.12
Server3:mysqld --ndb-cluster 192.168.0.13 (ndbd_mgm ndbd_mgmd也在本机)
操作系统均为
RH ES3
kernel-2.4.21-9.EL
glibc-2.3.2-95.6
所需软件包:
mysql-max-5.0.22-linux-i686-icc-glibc23.tar.gz
下载地址:http://dev.mysql.com/downloads/mysql/5.0.html
下载时注意系统环境和软件包版本,MySQL是max版的。
1.安装:
- # mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
- # cd /usr/local/
- # tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
- # ln -s mysql-max-4.1.9-pc-linux-gnu-i686 mysql
- # groupadd mysql
- # useradd -g mysql mysql
- # cd mysql
- # scripts/mysql_install_db --user=mysql
- # chown -R mysql:mysql .
2.编辑配置文件:
- # cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
- # vi /etc/my.cnf 在文件尾加入
- # my.cnf
- # example additions to my.cnf for MySQL Cluster
- # (valid in MySQL 5.0)
- # enable ndbcluster storage engine, and provide connectstring for
- # management Server host (default port is 1186)
- [mysqld]
- ndbcluster
- ndb-connectstring=192.168.0.13
- # provide connectstring for management Server host (default port: 1186)
- [ndbd]
- connect-string=192.168.0.13
- # provide connectstring for management Server host (default port: 1186)
- [ndb_mgm]
- connect-string=192.168.0.13
- # provide location of cluster configuration file
- [ndb_mgmd]
- config-file=/var/lib/mysql-cluster
保存&退出
#p#3.在Server1、Server2上创建日志文件夹,默认
# mkdir /var/lib/mysql-cluster
4.在Server3上创建ndb_mgmd启动配置文件:
- # mkdir /var/lib/mysql-cluster
- # cd /var/lib/mysql-cluster
- # vi config.ini
- 内容如下:
- # file "config.ini" - 2 data nodes and 2 SQL nodes
- # This file is placed in the startup directory of ndb_mgmd (the
- # management server)
- # The first MySQL Server can be started from any host. The second
- # can be started only on the host mysqld_5.mysql.com
- [NDBD DEFAULT]
- NoOfReplicas= 2
- DataDir= /var/lib/mysql-cluster
- [NDB_MGMD]
- Hostname= 192.168.0.13
- DataDir= /var/lib/mysql-cluster
- [NDBD]
- HostName= 192.168.0.11
- [NDBD]
- HostName= 192.168.0.12
- [MYSQLD]
- [MYSQLD]
- [MYSQLD]
保存&退出
[MYSQLD]
[MYSQLD]
[MYSQLD]
表示允许有三台MySQL服务器从任何IP访问数据库结点。
三、启动负载均衡服务
- Server3 /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
- Server1 /usr/local/mysql/bin/ndbd --initial #只在***次启动ndbd时使用--initial参数
- Server2 /usr/local/mysql/bin/ndbd --initial
- Server3 /usr/local/mysql/support-files/mysql.Server start
#p#四、检查工作状态
回到管理节点服务器Server3上,并启动管理终端:
- # /usr/bin/ndb_mgm
- 键入show命令查看当前工作状态:(下面是一个状态输出示例)
- ndb_mgm> show
- Cluster Configuration
- ---------------------
- [ndbd(NDB)] 2 node(s)
- id=2 (not connected, accepting connect from 192.168.0.11)
- id=3 @192.168.0.12 (Version: 5.0.22, Nodegroup: 0, Master)
- [ndb_mgmd(MGM)] 1 node(s)
- id=1 @192.168.0.13 (Version: 5.0.22)
- [mysqld(API)] 3 node(s)
- id=4 @192.168.0.13 (Version: 5.0.22)
- id=5 (not connected, accepting connect from any host)
- id=6 (not connected, accepting connect from any host)
- mysqld(API)即mysqld --ndb-cluster,MySQL服务器节点。当前只有Server3 MySQL启动。
如果上面没有问题,现在开始测试MySQL:
注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1、Server2、Server3的MySQL root密码。
在Server3中:
- # /usr/local/mysql/bin/mysql
- > use test;
- > CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
- > INSERT INTO ctest () VALUES (1);
- > SELECT * FROM ctest;
- 应该可以看到1 row returned信息(返回数值1)。
如果上述正常,则换到Server1、Server2上重复上面的测试,观察效果,数据库应该是同步刷新的。但首先要启动这两台机器的MySQL服务
# /usr/local/mysql/support-files/mysql.Server start
如果都没有问题,那么恭喜成功!
FAQ:
失败原因,可能是启动顺序不对。
查找所有ndb和sql相关进程,杀掉,重新按顺序来。
ps -aux |grep ndb
ps -aux |grep sql
kill -9 <PID> <PID> ...<PID>
五、破坏性测试
将Server1或Server2的网线拔掉,观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。
如果你接触不到物理服务器,也就是说不能拔掉网线,那也可以这样测试:在Server1或Server2上:ifconfig eth0 down #如果只有一块网卡,默认是eth0
之后在Server3上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:# ndbd
注意:前面说过了,此时是不用加--inital参数的!至此,MySQL集群就配置完成,MySQL负载均衡功能完成!如想实现Apache+PHP+MySQL集群负载均衡,只需Server3上安装Apache+PHP,并添加Server4,与其做LVS即可。