1 MMM高可用mysql方案
1.1 方案简介
MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份、节点之间重新同步功能的脚本。MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现服务器的故障转移,从而实现mysql的高可用。MMM不仅能提供浮动IP的功能,更可贵的是如果当前的主服务器挂掉后,会将你后端的从服务器自动转向新的主服务器进行同步复制,不用手工更改同步配置。这个方案是目前比较成熟的解决方案。
1.2 方案优缺点
优点:安全性、稳定性高,可扩展性好,高可用,当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。
缺点:至少三个节点,对主机的数量有要求,需要实现读写分离,对程序来说是个挑战。
1.3 方案架构图
1.4 适用场景
MMM的适用场景为数据库访问量大,业务增长快,并且能实现读写分离的场景。
1.5 方案实战
1.5.1 实战环境介绍
实战环境服务器列表:
服务器 |
主机名 |
ip地址 |
Serverid |
系统 |
Mysql |
Monitor |
Mon |
10.1.1.111 |
-- |
Centos 5.5 64bit |
-- |
Master1 |
db1 |
10.1.1.113 |
1 |
Centos 5.5 64bit |
5.1.63 |
Master2 |
db2 |
10.1.1.75 |
2 |
Centos 5.5 64bit |
5.1.63 |
Slave1 |
db3 |
10.1.1.108 |
3 |
Centos 5.5 64bit |
5.1.63 |
实战环境虚拟IP列表:
VIP |
Role |
description |
10.1.1.176 |
Read |
应用配置的读取IP,也可以在前端加lvs等,做负载均衡 。三台数据库每台一个浮动VIP |
10.1.1.177 |
Read |
|
10.1.1.178 |
Read |
|
10.1.1.179 |
Write |
应用配置的写入的VIP,单点写入。 |
1.5.2 MMM的安装
在安装mmm之前要安装epel包,因为Centos的默认源中没有mmm的安装包,Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOS、Scientific Linux)的一个高质量附加软件包项目。
安装epel:
wget ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm
rpm -Uvh epel-release-5-3.noarch.rpm
安装monitor的安装:
yum -y install mysql-mmm*
各个DB上只需要安装mysql-mmm-agent
yum -y install mysql-mmm-agent
1.5.3 MMM的配置
1.5.3.1 配置之前的准备
前提是要配置好master1和master2的主主同步,master1和slave1的主从同步,限于篇幅这里我就不做介绍了。
在配置mmm之前首先要在mysql中创建除复制帐号之外的另外两个帐号,首先来介绍monitor user帐号,这个帐号是monitor服务器用来对mysql服务器做健康检查的,其次就是agent user,这个帐号是mmm agent(mmm代理)用来变成只读模式和同步master等,下面是创建这两个帐号的语句:
GRANT REPLICATION CLIENT ON *.* TO 'mmm_monitor'@'10.1.1.%' IDENTIFIED BY 'monitor_password';
GRANT SUPER, REPLICATION CLIENT, PROCESS ON *.* TO 'mmm_agent'@'10.1.1.%' IDENTIFIED BY 'agent_password';
flush privileges;
这两个语句在每个mysql中都要执行一下。
1.5.3.2 Monitor服务器的配置
MMM的配置文件在/etc/mysql-mmm目录下,monitor需要配置的文件有mmm_common.conf、mmm_mon.conf两个文件。mmm_common.conf文件在mmm的各个节点都是一样的,因此配置好以后copy到各个DB节点即可。
我mmm_common.conf的配置如下:
vim /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 replication
replication_password 123456
agent_user mmm_agent
agent_password agent_password
</host>
<host db1>
ip 10.1.1.113 #这个IP尤其注意是db1的IP
mode master
peer db2
</host>
<host db2>
ip 10.1.1.75 #这个IP尤其注意是db2的IP
mode master
peer db1
</host>
<host db3>
ip 10.1.1.108
mode slave
</host>
<role writer>
hosts db1, db2
ips 10.1.1.179
mode exclusive
</role>
<role reader>
hosts db1, db2, db3
ips 10.1.1.176, 10.1.1.177, 10.1.1.178
mode balanced
</role>
我的mmm_mon.conf配置如下:
vim /etc/mysql-mmm/mmm_mon.conf
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 10.1.1.1, 10.1.1.113, 10.1.1.75, 10.1.1.108
# ping_ips 监控了网关IP和其他的DB节点IP
auto_set_online 60
</monitor>
<host default>
monitor_user mmm_monitor
monitor_password monitor_password
</host>
debug 0
1.5.3.3 各个DB服务器的配置
各个DB服务器要配置的东西比较不多,主要有mmm_common.conf、mmm_agent.conf和/etc/default/mysql-mmm-agent文件。
- db1 的配置
mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用
mmm_agent.conf的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db1
mysql-mmm-agent的配置:
vim /etc/default/mysql-mmm-agent
ENABLED=1
- db2 的配置
mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用
mmm_agent.conf的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db2
mysql-mmm-agent的配置:
vim /etc/default/mysql-mmm-agent
ENABLED=1
- db3 的配置
mmm_common.conf文件的配置和前面monitor的一样,直接copy过来即可使用
mmm_agent.conf的配置:
vim /etc/mysql-mmm/mmm_agent.conf
include mmm_common.conf
this db3
mysql-mmm-agent的配置:
vim /etc/default/mysql-mmm-agent
ENABLED=1
1.5.4 MMM的管理
1.5.4.1 MMM的启动和停止
- MMM的启动
启动mmm agent
/etc/init.d/mysql-mmm-agent start
将agent的启动命令写入到三个DB的rc.local文件中
启动mmm monitor
/etc/init.d/mysql-mmm-monitor start
将monitor的启动命令写入到monitor服务器的rc.local文件中
- MMM的停止
停止mmm agent
/etc/init.d/mysql-mmm-agent stop
停止mmm monitor
/etc/init.d/mysql-mmm-monitor stop
1.5.4.2 MMM的基本管理
查看集群的状态
mmm_control show
将db1设置成online状态
mmm_control set_online db1
更多管理命令请使用mmm_control help查看,或者参考:
http://blog.chinaunix.net/uid-20639775-id-154606.html
1.5.5 MMM架构的测试
环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:
- 停掉master1后在monitor端使用mmm_control show看是否能切换。看看slave1是否能正确切换同步。
- 启动master1后在monitor端使用mmm_control show看是否能切换。
- 停掉master2后看看能否正确切换。
1.5.6 MMM架构的监控
为实现高可用,系统的各个层面都需要全面的监控起来,比如agent进程的监控,monitor进程的监控,mysql可用性的监控,数据库同步的监控等,推荐使用nagios对以上资源进行监控,第一时间发现问题,第一时间处理。
mysql高可用探究 MMM高可用mysql方案的更多相关文章
-
mysql之MMM高可用方案简介
MMM(Master-Master Replication Manager for MySQL) MySQL主主复制管理器,提供了MySQL主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件.在 ...
-
mysql的MMM高可用方案
1 MMM高可用mysql方案 1.1 方案简介 MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复 ...
-
MySQL高可用架构-MMM环境部署记录
MMM介绍MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理 ...
-
MySQL高可用架构-MMM安装教程
安装指南: 一.架构以及服务器信息 基本安装包含至少2个数据库服务器和1个监视服务器.本例中使用2个监视服务器和5个数据库服务器(服务器系统为CentOS 7) 用途 IP 主机名 Server-id ...
-
002.MMM高可用MySQL简介
一 简介 MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一 ...
-
centos6.6部署mysql mmm高可用架构
一.环境简述 1.工作逻辑图 2.MySQL-MMM优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是 ...
-
MySQL高可用解决方案MMM
一.MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和 ...
-
Mysql MMM 高可用
一.Mysql MMM 高可用概况: mmm_mond 负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...
-
搭建MySQL MMM高可用
搭建MMM: 1,安装 agent 节点执行 yum install -y mysql-mmm-agent 2, monitor 节点执行 yum install -y mysql-mmm-monit ...
随机推荐
-
如何解决WebService参数传递中文乱码问题
1,问题由来 我的主要工作是负责统一适配平台这块,主要任务是提供给客户统一的调用接口,客户使用这个接口可以通过我们再调不同厂家的接口.主要流程如下: 现在客户那边传来的请求报文里面包含中文,使用web ...
-
Hue协作框架
http://archive.cloudera.com/cdh5/cdh/5/hue-3.7.0-cdh5.3.6/manual.html 一:框架 1.支持的框架 ->job ->yar ...
-
Essential C++ 学习笔记02--Array/Vector 与指针
Essential C++ 1.5-1.6节,3.1节笔记 Array/Vector/指针,难度偏大, 但若学习初期不熟悉基本用法,则难以写出有效代码. 1. 基本概念 Array 是一段连续内存,数 ...
-
20151221jquery学习笔记---日历UI
妹的,这几天真是无语了,参加了一个无聊的比赛,简直浪费时间,好几天没学jquery啊,今天学了一点,不过快要期末考试了,估计得攒到寒假了啊. 日历(datepicker) UI, 可以让用户更加直观的 ...
-
openstack初探
一 .openstack三大核心功能: 计算--Nova.存储--Cinder.网络--Neutron. Nova:提供了计算资源的管理,可以管理跨服务网络的VM实例.还提供对多种Hypervisor ...
-
EPZS搜索过程
EPZS(Enhance Predictive Zonal Search) 增强预测区域搜索,是一种整像素运动估计的搜索算法. EPZS采用的是相关性较高的预测方法.这里的相关性较高是指,更多地根据已 ...
-
【SQL】- 基础知识梳理(三) - SQL连接查询
一.引言 有时为了得到一张报表的完整数据,需要从两个或更多的表中获取结果,这时就用到了"连接查询". 二.连接查询 连接查询的定义: 数据库中的表通过键将彼此联系起来,从而获取这些 ...
-
IT服务(运维)管理实施的几个要点--第二章 人员和组织架构
子曰"没有合适的人" 在流程化的管理模式下,最容易步入的一个误区是按流程设计一个"理想的"组织架构,然后对应于这个架构对人员进行评估.培养,甚至是更换.我见过很 ...
-
python 全栈开发,Day81(博客系统个人主页,文章详情页)
一.个人主页 随笔分类 需求:查询当前站点每一个分类的名称以及对应的文章数 完成这个需求,就可以展示左侧的分类 它需要利用分组查询,那么必须要会基于双下划线的查询. 基于双下划线的查询,简单来讲,就是 ...
-
【NOI2005】 聪聪可可
树分治劲啊 原题: 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了, ...