现在的位置: 首页 > 综合 > 正文

mysql-mmm环境搭建

2013年06月09日 ⁄ 综合 ⁄ 共 3134字 ⁄ 字号 评论关闭

实验准备:需要准备多台虚拟机,保证6台机器数量(1client+1monitor+2master+2slave)

在rhel6下安装第2台虚拟机

由于第1台虚拟机不是image,故不能直接使用图形化工具clone,需要使用终端命令操作,
然后再用图形化虚拟管理程序新建一个虚拟机,步骤如下:
1.先启动第1个已经存在的虚拟机//这个只要启动,就会在真机生成ifcfg-eth0和rules文件
2.保证2台虚拟机端口都为eth0,为后续方便实验
在真机上
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
注释或删除掉 uuid 和 mac地址
#rm -f /etc/udev/ruled.d/70-persistent-net.rules
#关闭第1台虚拟机
3.复制出image文件出来
#dd if=/dev/vol0/vserver of=/var/lib/libvirt/images/vserver2.img
4.在virt-manager应用上
NEW
import existing disk image
~~~~~~~
注意使用网络搭建的方式
NAT 在同一台机器上不同ip通信
BRIDGE 不同机器上不同ip通信,这里选此种!
~~~~~~~
由于第2台为image作为源的 可以用图形化方式去做clone,即右击选clone的方式

============================================================

proxy
1.轮询,只需提供虚拟ip地址给客户端即可访问
2.读写分离,有助于读并发数量过大时,可以减轻写服务器的负担
 所有读请求分发到slave,所有写请求分发到master

sql攻击 password=123 or 1=1   //1=1永远为真,则用户通过,实际中开发人员会通过格式化限制避免此问题

真机proxy 2台虚拟机做server先不做AB同步,只做单向同步,用来测试读写分离
测试方法在server端建立相同库相同表,表里面写各自server的ip地址
测试结果:刚开始查询时,都为master的地址,当master的负载加大时,查询时就会转向slave机器

这里我将实验用到的包都放到了/usr/src下,U盘下也有
1.做好单向主从同步,参考前面的文章,假设主ip为192.168.0.132 slave为192.168.0.232
并且master也要授权给proxy机器
2.假设在192.168.0.32上做proxy的搭建,
cd /usr/src/mysql-proxy/
rpm -ivh  mysql-proxy-0.8.1-1.el6.x86_64.rpm
vi /etc/sysconfig/mysql-proxy //可以定义proxy后端的server ip地址
『注释掉前面几行,只留最后一行 proxy的启动参数 "-b 192.168.0.132:3306 -b 192.168.0.232:3306"』
//这里-b表示可读写,后续读写分离会再做修改
service mysql-proxy sart
3.客户端登录(192.168.0.12)
mysql -utest -predhat -h192.168.0.43 -p4040 客户端登录时加默认端口
4.进一步修改实现读写分离
rpm -ql mysql-proxy | grep lua | grep rw //我们查询下该版即0.8.1是否有lua
没有的话我们从0.8.3中取
cd /usr/src/mysql-proxy
tar xf mysql-proxy-0.8.3.tar.gz
ls mysql-prxoy-0.8.3/lib/ | grep rw
cp mysql-prxoy-0.8.3/lib/rw-splitting.lua /usr/share/lua/5.1
vi /etc/sysconfig/mysql-proxy
『-b 192.168.0.132:3306 -r 192.168.0.232:3306 -s /usr/share/lua/5.1/rw-splitting.lua』 //添加读写分离
service mysql-proxy restart
//现在再做一次负载测试,读写分离实现

题外话:变形虫
lua的问题,如果只有1台写机,1台读机,写机挂掉,那么proxy在读时会出现问题(proxy的单点故障,后续更新)

==================================================
考虑多台master解决机器挂掉,轮询延时
slave负载均衡 master-slave同步智能迁移

mysql-mmm 为perl脚本,为监控master-slave各个server故障的工具
~~~~实验准备~~~~~
monitor机器上需要安装的包,将下列写如脚本
#!/bin/bash
yum -y install libart_lgpl perl-Date-Manip perl-XML-DOM perl-XML-DOM-XPath perl-XML-Parser perl-XML-RegExp rrdtool perl-Class-Singleton perl perl-DBD-MySQL perl-Params-Validate perl-MailTools perl-Time-HiRes
rpm -ivh *.rpm --force

非monitor的其他机器,master,slave机器
#!/bin/bash
yum -y install libart_lgpl perl-Date-Manip perl-XML-DOM perl-XML-DOM-XPath perl-XML-Parser perl-XML-RegExp rrdtool perl perl-DBD-MySQL perl-Params-Validate perl-MailTools perl-Time-HiRes mysql mysql-server mysql-connector-odbc
rpm -ivh perl-Algorithm-Diff-1.1902-9.el6.noarch.rpm
rpm -ivh perl-Log-Dispatch-2.26-1.el6.rf.noarch.rpm
rpm -ivh perl-Log-Log4perl-1.26-1.el6.rf.noarch.rpm
rpm -ivh perl-Proc-Daemon-0.06-1.el6.noarch.rpm
rpm -ivh perl-Proc-ProcessTable-0.44-4.el6.x86_64.rpm

~~~~主从同步~~~~~
4台机器(master1,master2,slave1,slave2。其中master1和master2为双向同步,slave1和slave2为可读)
~~~~mmm搭建~~~~~
增加1台机器(monitor,其监控的agent为上述4台机器)
~~~~proxy搭建~~~~~
增加1台机器
~~~~client端搭建论坛~~~~
增加1台机器(论坛搭建参考前面)
这样就需要6个ip地址,再加上从proxy发出时映射的为VIP,故还需4个vip对应4台机器
总共需要10个ip地址

hosts文件写入所有ip地址
同步到各个机器 (master\slave\monitor端)

安装中可能出现的问题,缺少perl-Test-Base包

测试中要想其中的master挂掉,可以在该master终端,打如下命令
iptables -I INPUT 1 ! -S 192.168.0.254/32 -j DROP  //表示拒绝来自0.254(实验中其他IP地址都是走254网关过来的)过来的请求

具体操作文档请参照mysql-mmm文档

抱歉!评论已关闭.