高可用MMM

什么是MMM

MMM(Master-Master replication managerfor MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。

MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构

MySQL-MMM优缺点

  1. 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作。
  2. 缺点:Monitor节点是单点,可以结合Keepalived实现高可用
  3. 由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。对于那些对数据的一致性要求很高的业务,非常不建议采用MMM这种高可用架构。

实现原理

两台master互为主从,一台为只读,做为备份,应急时可做为写master.其中mmm_mond进程定时心跳检测,失败则将write ip 浮动到另外一台master。

安装mysql软件

在每台服务器上安装mysql软件,在每台服务器上关闭selinux,关闭防火墙在配置文件my.cnf里增加如下内容:

[mysqld]

datadir=/usr/local/mysql/data

socket=/var/lib/mysql/mysql.sock

user=mysql

#下面为新添加的内容

 default-storage-engine = innodb

replicate-ignore-db = mysql

binlog-ignore-db= mysql

server-id = 1

log-bin=/usr/local/mysql/logs/mysql-bin.log

 log_bin_index=/usr/local/mysql/logs/mysql-bin.log.index

relay_log=/usr/local/mysql/logs/mysql-bin.relay

relay_log_index=/usr/local/mysql/logs/mysql-bin.relay.index

expire_logs_days= 10

 max_binlog_size = 100M

log_slave_updates

sync-binlog = 1

在/etc/hosts里配上所有主机信息

192.168.10.131 db1

192.168.10.132 db2

192.168.10.133 db3

192.168.10.134 db4

192.168.10.135 db5

配置主主复制

即两个主master(db1、db2)互为主从,与主从类似,只是需要逆向配置一下。
a、先查看db1db2 binlog日志和pos值
db1

db2

b、在db1执行:

mysql> GRANTREPLICATION SLAVE ON *.* TO ‘replication‘@‘192.168.10.%‘ IDENTIFIED BY‘replication‘; mysql> flush privileges;

mysql>changemastertomaster_host=‘192.168.10.132‘,master_user=‘replication‘,master_password=‘replication‘,master_log_file=‘mysql-bin.000003‘,master_log_pos=120;

mysql> start slave;

#启动同步

c、在db2执行:

mysql> GRANT REPLICATIONSLAVE ON *.* TO ‘replication‘@‘192.168.10.%‘ IDENTIFIED BY ‘replication‘;mysql> flush privileges;

mysql>changemastertomaster_host=‘192.168.10.131‘,master_user=‘replication‘,master_password=‘replication‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=120;

mysql> start slave;

 #启动同步

db3、db4作为db1的从库slave

在db3、db4上执行

mysql> change master tomaster_host=‘192.168.10.131‘,master_user=‘replication‘,master_password=‘replication‘,master_log_file=‘mysql-bin.000001‘,master_log_pos=120;

mysql> startslave;

#启动同步

MYSQL-MMM的安装

epel源安装
CentOS 默认没有 mysql-mmm 软件包,官方推荐使用 epel 的网络源,五台都安装epe

wgethttp://mirrors.hustunique.com/epel/6/x86_64/epel-release-6-8.noarch.rpm wgethttp://mirrors.hustunique.com/epel/RPM-GPG-KEY-EPEL-6

rpm --import RPM-GPG-KEY-EPEL-6

rpm -ivh epel-release-6-8.noarch.rpm

monitor节点安装db5
在db5上执行

yum -y install mysql-mmm-monitor

四台db节点上安装agent
在db1db2 db3 db4上执行

mysql -uroot -p

mysql> GRANT REPLICATION CLIENT ON *.* TO‘mmm_monitor‘@‘192.168.10.%‘ IDENTIFIED BY ‘monitor‘; mysql> GRANTSUPER,REPLICATION CLIENT, PROCESS ON *.* TO ‘mmm_agent‘@‘192.168.10.%‘IDENTIFIED BY‘agent‘;

在db1上修改mmm_common.conf文件(5台相同)

vi /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_userreplication

replication_passwordreplication

agent_user mmm_agent

agent_password agent

</host>

<host db1>

ip 192.168.10.131

modemaster

peerdb2

</host>

<host db2>

ip 192.168.10.132

modemaster peerdb1

</host>

<host db3>

ip 192.168.10.133

modeslave

</host>

<host db4>

Ip 192.168.10.134

Modeslave

</host>

<role writer>

hosts db1, db2

ips 192.168.10.128

modeexclusive #只有一个虚拟IP可以写

</role>

<role reader>

hosts db3, db4

ips 192.168.10.129,192.168.10.130

modebalanced #多个虚拟ip可以读

</role>

传到其它4个节点

scp /etc/mysql-mmm/[email protected]:/etc/mysql-mmm/

scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/

scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/

scp /etc/mysql-mmm/mmm_common.conf [email protected]:/etc/mysql-mmm/

无scp命令,安装一下包

yum install openssh-clients

修改四台db代理端 mmm_agent.conf 文件
在db1db2 db3 db4上修改

vi /etc/mysql-mmm/mmm_agent.conf

include mmm_common.conf

this db1 #分别修改为本机的主机名,即db1、db2、db3和db4

修改管理端的mmm_mon.conf文件
在db5上执行

vi /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.statusping_ips192.168.10.131,192.168.10.132,192.168.10.133,192.168.10.133,192.168.10.134#真实数据库IP,来检测网络是否正常

auto_set_online 10 #恢复后自动设置在线的时间

</monitor>

<host default>

monitor_usermmm_monitor

monitor_passwordmonitor

</host>

debug 0

启动MYSQL-MMM

db代理端启动db1 db2 db3 db4

[[email protected] ~]#/etc/init.d/mysql-mmm-agent start

[[email protected] ~]# chkconfigmysql-mmm-agent on

monitor管理端启动db5

[[email protected] ~]#/etc/init.d/mysql-mmm-monitor start

[[email protected] ~]# chkconfigmysql-mmm-monitor on

测试集群

1)查看集群状态db5
mmm_control show

(2)故障转移
模拟停掉db1数据库后
看它的状态变了

时间: 2024-12-11 13:49:57

高可用MMM的相关文章

MySQL高可用MMM

一.MMM简介: MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover的解决方案,通过MMM方案能实

第22章 mysql 高可用MMM、MHA

2015-10-25 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 分享MYSQL中的各种高可用技术(源自姜承尧大牛) [4] MHA工作原理 [5] 技术实战:基于 MHA 方式实现 MySQL 的高可用(1) [6] mysql HA方案: MHA [7] mysql高可用方案MHA介绍 [8] Mysql5.5

MySQL 高可用MMM安装部署以及故障转移详细资料汇总

1,      mmm简介 MMM(Master-Masterreplication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的r

MySQL 高可用MMM

一.MMM简介: MMM即Multi-MasterReplication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover的解决方案,通过MMM方案能实现

Mysql数据库实现高可用

Mysql实现高可用 MMM MMM(master-master replication manager for mysql)mysql主主复制管理器. MMM是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql master-master复制的配置(同一时间只有一个节点是可写的). MMM的监管端是会提供多个虚拟ip(vip),包括一个可写的vip,多个可读的vip,通过监管的管理,这些ip会绑定在可用的mysql上,当某一台m

MariaDB基于MHA和Galera Cluster实现高可用

MySQL高可用 MMM:MySQL主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysqk replication进行监控和故障迁移,并能管理mysql master-master复制的配置(同一时间只有一个节点是可写的) MHA:对主节点进行监控,可实现自动故障转移至其他从节点,通过提升某一节点为新的主节点,基于主从复制实现,还需要客户端配合时间,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群汇总最少有三台数据库服务器,一主二从,即一太充当master,一台充

mysql高可用集群方案

这里有一篇关于Mysql高可用方案的干货文章:[干货分享] 一文了解数据库高可用容灾方案的设计与实现 网友们公司中的使用方案讨论:想问各位大大 MySQL 是怎么做高可用的? 一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+Heartbeat) 方案三:主从复制架构 主从复制(一主多从) MMM架构(双主多从) MHA架构(多主多从) 方案四:数

mysql高可用之MMM

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MMM简介: MMM即Multi-MasterReplication Manager for MySQL:mysql多主复制管理器.MMM是perl语言编写的. MMM的特点: ①基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入): ②MMM也能对从服务器进行读

通过MMM构建MYSQL高可用集群系统

本文为南非蚂蚁的书籍<循序渐进linux-第二版>-8.4的读笔记 MMM集群套件(MYSQL主主复制管理器) MMM套件主要的功能是通过下面三个脚本实现的 1)mmm_mond 这是一个监控进程,运行在管理节点上,主要负责都所有数据库的监控工作,同时决定和处理所有节点的角色切换 2)mmm_agentd 这是一个代理进程,运行在每个MYSQL服务器上,主要完成监控的测试工作以及执行简单的远端服务设置 3)mmm_control 简单的管理脚本,用来查看和管理集群运行状态,同事管理mmm_mo