使用mysql-mmm实现MySQL高可用集群
背景:之前实现的mysql同步复制功能(见笔者之前文章http://blog.csdn.net/kingofworld/article/details/39210937)仅仅是双机热备功能,还不能做到Mysql链接的自己主动切换。
本配置实现真正的mysql集群。使得在某台机子的mysql应用停止时,能让应用程序自己主动切换到另外一台机子的mysql连接,实现应用的高稳定性。而且使得扩展Mysql服务成为可能。
本配置使用mysql-mmm(master-master Replication Manager for MySQL)组件实现集群功能。
本次演示的配置使用三台机器,架构例如以下:
Master1 和Master2两台机器实现双机热备。当中一台机器的mysql服务停止或机器宕机。应用程序都会将数据库连接自己主动切换到另外一台机子。
另外用一台机子实时备份master1的数据。
1、安装mysql-mmm服务
在三台机器都安装
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install mysql-mmm*
完毕后查看 rpm -qa|grep mysql-mmm
有下面组件表示成功安装
Rhel5或centos5,32位:http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Rhel6或centos6,32位:http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
Rhel6或centos6,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.csdn.net/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 M1、this M2、this 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
能够看到下面信息:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ29md29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
表示写server(200.200.168.26)使用的是200.200.168.24
读server(200.200.168.27)使用的是200.200.168.25
查看各个服务的状态:
mmm_control checks all
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ29md29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
6、測试:
将master1的mysql服务停止。然后mmm_control show查看状态
能够看到读写server都转移到了master2,这时servermaster1的流程应用还能够正常使用。能够进行申请流程測试
这时查看mmm_control checks all
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ29md29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
将master1 的mysql服务启动,再查看状态:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2luZ29md29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
读写server又分开了
使用mysql-mmm实现MySQL高可用集群的更多相关文章
- MHA-结合MySQL半同步复制高可用集群(Centos7)
目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) ...
- mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- keepalived+MySQL高可用集群
基于keepalived搭建MySQL的高可用集群 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...
- (转)基于keepalived搭建MySQL的高可用集群
基于keepalived搭建MySQL的高可用集群 原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...
- MySQL高可用集群方案
一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...
- corosync+pacemaker and drbd实现mysql高可用集群
DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...
- heatbeat-gui实现基于nfs的mysql高可用集群
一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...
- Mysql高可用集群环境介绍
MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...
- Mysql 高可用集群PXC
PXC是percona公司的percona xtraDB cluster,简称PXC.它是基于Galera协议的高可用集群方案.可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可 ...
- 部署MYSQL高可用集群
mysql-day08 部署MYSQL高可用集群 u 集群架构 ...
随机推荐
- 根据input 标签取value属性的值
jrhmpt01:/root/lwp/0526# cat a1.pl use LWP::UserAgent; use DBI; use POSIX; use Data::Dumper; use HTM ...
- cocos2d-x在win32和iOS、android下获取当前系统时间的方法
最近在游戏里要显示当前系统时间的功能,网上一搜很多写着获取的方法,大都是如下 struct cc_timeval now; CCTime::gettimeofdayCocos2d(&now, ...
- 几种快速傅里叶变换(FFT)的C++实现
链接:http://blog.csdn.net/zwlforever/archive/2008/03/14/2183049.aspx一篇不错的FFT 文章,收藏一下. DFT的的正变换和反变换分别为( ...
- 控件编写:增强 TMEMO (一)(增加对WM_HSCROLL消息的处理)
相信没有什么人对 MEMO 陌生了吧.尽管其组件的功能不错.但是,对它进行一些功能的改进,可以更好的使用. 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件. 但,TM ...
- cpp check 分析
1 FileTabCharacterCheck 为什么检查: 因为对于一个TAB而言,所空的空格不定是固定的,如果在机器A上设置了是4个空格,显示正常,而在机器B上阅读,B机器是100个空格为一个TA ...
- IT行业,需要经常锻炼,开篇从本钱开始
今天下完班,和部门兄弟一起去打了两小时乒乓球,大汗淋漓,很痛快. 败给了两个高手,感觉年龄大了些,灵活性没有以前那么好了. 想想以前读书时,在整个学校都叱诧风云,如今即败给了几个老手,唉. 看来以后要 ...
- 5款帮助简化的HTML5 Audio开发的Javascript类库
HTML5的audio标签提供了我们方便控制声音的功能,可是使用原生的HTML5来开发声音或者音乐相关的项目仍旧很的麻烦.在今天这篇文章中,我们将介绍5款帮助你简化开发的javascript audi ...
- [IOS]Setting Bundle + StoryBoard
用storyboard添加一个导航栏,其中首页有一个switch,与setting联动,还有一个button,使用modal连接另一个viewControl,其上也有一个按钮,按下销毁本viewCon ...
- VMware vSphere服务器虚拟化实验六 vCenter Server 添加储存
VMware vSphere服务器虚拟化实验六 vCente ...
- [计算机基础]URI与URL
URI : uniform resource identifier统一资源标示符用于指定Web资源的字符串,它定义了Web资源中的各个不同的部分.ex:http://example.org/absol ...