背景:之前实现的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高可用集群的更多相关文章

  1. MHA-结合MySQL半同步复制高可用集群(Centos7)

    目录 一.理论概述 本案例部署思路 二.环境 三.部署 部署MHA 部署二进制包MySQL及部署主从复制 部署半同步复制 配置MHA MHA测试 部署lvs+keepalived(lvs1,lvs2) ...

  2. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  3. keepalived+MySQL高可用集群

    基于keepalived搭建MySQL的高可用集群   MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...

  4. (转)基于keepalived搭建MySQL的高可用集群

    基于keepalived搭建MySQL的高可用集群  原文:http://www.cnblogs.com/ivictor/p/5522383.html MySQL的高可用方案一般有如下几种: keep ...

  5. MySQL高可用集群方案

    一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...

  6. corosync+pacemaker and drbd实现mysql高可用集群

    DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...

  7. heatbeat-gui实现基于nfs的mysql高可用集群

    一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...

  8. Mysql高可用集群环境介绍

    MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...

  9. Mysql 高可用集群PXC

    PXC是percona公司的percona  xtraDB  cluster,简称PXC.它是基于Galera协议的高可用集群方案.可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可 ...

  10. 部署MYSQL高可用集群

                                                  mysql-day08     部署MYSQL高可用集群 u 集群架构                   ...

随机推荐

  1. 根据input 标签取value属性的值

    jrhmpt01:/root/lwp/0526# cat a1.pl use LWP::UserAgent; use DBI; use POSIX; use Data::Dumper; use HTM ...

  2. cocos2d-x在win32和iOS、android下获取当前系统时间的方法

    最近在游戏里要显示当前系统时间的功能,网上一搜很多写着获取的方法,大都是如下 struct cc_timeval now; CCTime::gettimeofdayCocos2d(&now, ...

  3. 几种快速傅里叶变换(FFT)的C++实现

    链接:http://blog.csdn.net/zwlforever/archive/2008/03/14/2183049.aspx一篇不错的FFT 文章,收藏一下. DFT的的正变换和反变换分别为( ...

  4. 控件编写:增强 TMEMO (一)(增加对WM_HSCROLL消息的处理)

    相信没有什么人对 MEMO 陌生了吧.尽管其组件的功能不错.但是,对它进行一些功能的改进,可以更好的使用. 有的时候,我们想要知道,当前的坐标是什么?甚至,想要在 滚动条滚动时触发一些事件. 但,TM ...

  5. cpp check 分析

    1 FileTabCharacterCheck 为什么检查: 因为对于一个TAB而言,所空的空格不定是固定的,如果在机器A上设置了是4个空格,显示正常,而在机器B上阅读,B机器是100个空格为一个TA ...

  6. IT行业,需要经常锻炼,开篇从本钱开始

    今天下完班,和部门兄弟一起去打了两小时乒乓球,大汗淋漓,很痛快. 败给了两个高手,感觉年龄大了些,灵活性没有以前那么好了. 想想以前读书时,在整个学校都叱诧风云,如今即败给了几个老手,唉. 看来以后要 ...

  7. 5款帮助简化的HTML5 Audio开发的Javascript类库

    HTML5的audio标签提供了我们方便控制声音的功能,可是使用原生的HTML5来开发声音或者音乐相关的项目仍旧很的麻烦.在今天这篇文章中,我们将介绍5款帮助你简化开发的javascript audi ...

  8. [IOS]Setting Bundle + StoryBoard

    用storyboard添加一个导航栏,其中首页有一个switch,与setting联动,还有一个button,使用modal连接另一个viewControl,其上也有一个按钮,按下销毁本viewCon ...

  9. VMware vSphere服务器虚拟化实验六 vCenter Server 添加储存

                                                                          VMware vSphere服务器虚拟化实验六 vCente ...

  10. [计算机基础]URI与URL

    URI : uniform resource identifier统一资源标示符用于指定Web资源的字符串,它定义了Web资源中的各个不同的部分.ex:http://example.org/absol ...