本站首页    管理页面    写新日志    退出


«July 2020»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7228509
建立时间:2006年5月29日




[MySQL集群]mysql 5.0 集群负载均衡—经过测试
软件技术

lhwork 发表于 2008-3-13 21:01:46

一、介绍========测试环境:Server1:ndbd 192.168.0.11Server2:ndbd 192.168.0.12Server3:mysqld --ndb-cluster 192.168.0.13 (ndbd_mgm ndbd_mgmd也在本机)操作系统均为RH ES3kernel-2.4.21-9.ELglibc-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版的。首先,明确几个概念(参照下图):ndbd: 数据库节点。mysqld --ndb-cluster: MySQL服务器节点,程序直接访问的是这台机器的IP。默认端口仍是3306。ndbd_mgm ndbd_mgmd: 管理节点。管理/查看各库节点和服务器节点的状态。500)this.width=500'>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" alt="" src="http://hiphotos.baidu.com/lihangel/pic/item/b2c1c31f5023f0f3e0fe0b24.jpg" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border=0>二、在Server1、Server2、Server3上安装MySQL=================================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]ndbclusterndb-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保存&退出3.在Server1、Server2上创建日志文件夹,默认# mkdir /var/lib/mysql-cluster4.在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= 2DataDir= /var/lib/mysql-cluster[NDB_MGMD]Hostname= 192.168.0.13DataDir= /var/lib/mysql-cluster[NDBD]HostName= 192.168.0.11[NDBD]HostName= 192.168.0.12[MYSQLD][MYSQLD][MYSQLD]保存&退出[MYSQLD][MYSQLD][MYSQLD]表示允许有三台MySQL服务器从任何IP访问数据库结点。各参数功能,请参考http://dev.mysql.com/doc/refman/ ... config-example.html三、启动服务============Server3 /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.iniServer1 /usr/local/mysql/bin/ndbd --initial #只在第一次启动ndbd时使用--initial参数Server2 /usr/local/mysql/bin/ndbd --initialServer3 /usr/local/mysql/support-files/mysql.Server start四、检查工作状态================回到管理节点服务器Server3上,并启动管理终端:# /usr/bin/ndb_mgm键入show命令查看当前工作状态:(下面是一个状态输出示例)ndb_mgm> showCluster 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 ndbps -aux |grep sqlkill -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即可!


阅读全文(4556) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144422384 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号