设为首页 收藏本站
查看: 691|回复: 0

[经验分享] 使用mysql-mmm实现mysql集群部署

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-10-15 08:51:10 | 显示全部楼层 |阅读模式
本配置实现真正的mysql集群,使得在某台机子的mysql应用停止时,能让应用程序自动切换到另外一台机子的mysql连接,实现应用的高稳定性,并且使得扩展Mysql服务成为可能。
本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。
本次演示的配置使用三台机器,架构如下:
SouthEast.jpg
Master1 Master2两台机器实现双机热备,其中一台机器的mysql服务停止或机器宕机,应用程序都会将数据库连接自动切换到另外一台机子。另外用一台机子实时备份master1的数据。
1、安装mysql-mmm服务
在三台机器都安装
wget http://dl.fedoraproject.org/pub/ ... ease-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm*
完成后查看  rpm -qa|grep mysql-mmm
有以下组件表示安装成功
SouthEast.jpg
Rhel5或centos5,32位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Rhel6centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Rhel6centos6,64位:http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
1、添加mysql的用户
在三台机器都添加mysql用户,分别用于复制、
进入mysql服务mysql -u root -p
use mysql;
grant REPLICATION slave,REPLICATION CLIENT on *.* to 'repl'@'%' identified by 'password';  //建立复制用户
grant PROCESS,SUPER,REPLICATION CLIENT on *.* to 'mmm_agent'@'%' identified by 'password'; //建立agent用户
grant REPLICATION CLIENT on *.* to 'mmm_monitor'@'%' identified by 'password';  //建立用户
FLUSH PRIVILEGES;
2、配置同步复制
配置复制的策略如架构图所示。
配置方法在我上一篇文章有介绍过,这里不再重复,见笔者之前文章http://blog.iyunv.com/kingofworld/article/details/39210937
3、修改hosts
分别修改三台机器的hosts文件
vi /etc/hosts
添加
200.200.168.24 M1
200.200.168.25 M2
200.200.168.23 slave1
4、配置mysql-mmm
修改 /etc/mysql-mmm/mmm_common.conf  各台机子的配置都一样
  • active_master_role      writer  
  •   
  • <host default>  
  •     cluster_interface       eth0  
  •     pid_path                /var/run/mysql-mmm/mmm_agentd.pid  
  •     bin_path                /usr/libexec/mysql-mmm/  
  •     replication_user        repl  
  •     replication_password    password  
  •     agent_user              mmm_agent  
  •     agent_password          <span style="font-size: 13.3333339691162px;">password</span>  
  • </host>  
  •   
  • <host M1>  
  •     ip      200.200.168.24  
  •     mode    master  
  •     peer    M2  
  • </host>  
  •   
  • <host M2>  
  •     ip      200.200.168.25  
  •     mode    master  
  •     peer    M1  
  • </host>  
  •   
  • <host slave1>  
  •     ip      200.200.168.23  
  •     mode    slave  
  • </host>  
  •   
  • <role writer>  
  •     hosts   M1,M2  
  •     ips     200.200.168.26  
  •     mode    exclusive  
  • </role>  
  •   
  • <role reader>  
  •     hosts   M1,M2,slave1  
  •     ips     200.200.168.27  
  •     mode    balanced  
  • </role>  

注意:200.200.168.26和200.200.168.27是两个虚拟的IP地址,供应用程序调用,只需用两个没人占用的IP就可以,分别用来提供写和读服务,为以后实现数据库的读写分离(但实现读写分离需要修改应用程序,mysql并不能自动识别并切换)。
修改/etc/mysql-mmm/mmm_agent.conf
三台机器分别设置为this M1this M2this slave1
修改/etc/mysql-mmm/mmm_mon.conf
只是monitor(200.200.168.24)机子需要配置
  • include mmm_common.conf  
  • <monitor>  
  •     ip                  127.0.0.1  
  •     pid_path            /var/run/mysql-mmm/mmm_mond.pid  
  •     bin_path            /usr/libexec/mysql-mmm  
  •     status_path         /var/lib/mysql-mmm/mmm_mond.status  
  •     ping_ips            200.200.168.24,200.200.168.25,200.200.168.23  
  •     auto_set_online     10  
  •   
  •     # The kill_host_bin does not exist by default, though the monitor will  
  •     # throw a warning about it missing.  See the section 5.10 "Kill Host   
  •     # Functionality" in the PDF documentation.  
  •     #  
  •     # kill_host_bin     /usr/libexec/mysql-mmm/monitor/kill_host  
  •     #  
  • </monitor>  
  • <host default>  
  •     monitor_user        mmm_monitor  
  •     monitor_password    password  
  • </host>  
  • debug 0  

配置完成后运行
三台机子都需运行:
/etc/init.d/mysql-mmm-agent start
Monitor机子运行
/etc/init.d/mysql-mmm-monitor start
5、查看服务状态及测试
在monitor机子运行mmm_control show
可以看到以下信息:
SouthEast.jpg
表示写服务器(200.200.168.26)使用的是200.200.168.24
读服务器(200.200.168.27)使用的是200.200.168.25
查看各个服务的状态:
mmm_control checks all
SouthEast.jpg
6、测试:
将master1mysql服务停止,然后mmm_control show查看状态
SouthEast.jpg
可以看到读写服务器都转移到了master2,这时服务器master1的流程应用还能够正常使用,可以进行申请流程测试
这时查看mmm_control checks all
SouthEast.jpg
将master1 mysql服务启动,再查看状态:
SouthEast.jpg
读写服务器又分开了
SouthEast.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-26045-1-1.html 上篇帖子: mysql数据库读写分离 下篇帖子: linux/centos下设置Mysql表名不区分大小写 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表