Mysql-mmm高可用集群

本文详细介绍了MySQL-MMM集群技术,包括其工作概述、优缺点、内部工作架构,并通过一个案例展示了如何搭建MySQL 5.6双主高可用集群,涉及主从复制、故障切换和读写分离配置。
摘要由CSDN通过智能技术生成

一、Mysql-mmm集群技术概述

概述:

MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,可以说是mysql主主复制管理器。

虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,以加速在主主切换时刻备选主的预热,可以说MMM这套脚本程序一方面实现了故障切换的功能,另一方面其内部附加的工具脚本也可以实现多个slave的read负载均衡。

MMM提供了自动和手动两种方式移除一组服务器中复制延迟较高的服务器的虚拟ip,同时它还可以备份数据,实现两节点之间的数据同步等。由于MMM无法完全的保证数据一致性,所以MMM适用于对数据的一致性要求不是很高,但是又想最大程度的保证业务可用性的场景。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHcbfikn-1624164805432)(en-resource://database/847:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sN1vrBC5-1624164805434)(en-resource://database/849:1)]


二、Mysql-mmm优缺点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lw5kGeaI-1624164805435)(en-resource://database/851:1)]


三、Mysql-mmm内部工作架构

进程类型:

mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行

mmm_agentd:运行在每个mysql服务器上(Master和Slave)的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在被监管机上运行

mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令

工作架构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znebewIi-1624164805436)(en-resource://database/853:1)]

工作原理:

mysql-mmm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP

通过监管的管理,这些IP会绑定在可用mysql之上

当某一台mysql宕机时,监管会将VIP迁移至其他mysql


四、案例搭建Mysql-mmm+mysql 5.6双主高可用集群

案例环境:

准备五台MySQL服务器
分别是:

192.168.1.1 master1
192.168.1.2 master2
192.168.1.3 slave1
192.168.1.4 slave1
192.168.1.5 monitor
192.168.1.6 client
案例步骤:
部署master1节点的ntp服务以及域名解析(在此只举例master1):
hostnamectl set-hostname master1
bash
 cat <<END >>/etc/hosts
192.168.1.1 master1
192.168.1.2 master2
192.168.1.3 slave1
192.168.1.4 slave2
192.168.1.5 monitor
END
配置master2、slave1、slave2、monitor节点同步ntp时间及域名解析(在此只列举master2单台主机配置)
yum -y install ntp
sed -i '/^server/s/^/#/g' /etc/ntp.conf 
grep "^#server" /etc/ntp.conf
cat <<END >>/etc/ntp.conf 
server 127.127.1.0
fudge 127.127.1.0 stratum 8
END
systemctl start ntpd
systemctl enable ntpd
netstat -anptu | grep ntpd
yum -y install ntpdate
ntpdate 192.168.1.1

以上master2、slave1、slave2、monitor都要操作

配置master1实现双主复制

master1:

vi /etc/my.cnf

server-id=1
log-bin=mysql-bin
log-slave-updates
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
relay-log=relay1-log-bin
relay-log-index=slave-relay1-bin.index

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cc5VoqoZ-1624164805437)(en-resource://database/855:1)]

注解:

sync_binlog=1                                                ##主机每次提交事务的时候把二进制日志的内容同步到磁盘上,所以即使服务器崩溃,也会把时间写入到日志中;

auto_increment_increment=2                  ##以下两参数用于主主复制中,用于错开增值,防止键值冲突

master1:

systemctl restart mysqld
mysql -uroot -p123456
mysql> grant replication slave on *.* to 'master'@'192.168.100.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值