MMM高可用性部署

发布于:2024-07-05 ⋅ 阅读:(16) ⋅ 点赞:(0)

MMM概述

MMM

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

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

MMM是一套灵活的脚本程序,基于perl实现,用来对 mysql replication 进行监控和故障迁移,并能管理 MySQL Master-Master 复制的配置。

MMM架构

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

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

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

  • mysql-mmm 的监管端会提供多个虚拟 IP(VIP),包括一个可写 VIP,多个可读 VIP,通过监管的管理,这些 IP 会绑定在可用 MySQL 之上,当某一台 MySQL 宕机时,监管会将 VIP 迁移至其他 MySQL。

MMM部署

实验环境

主机 IP 虚拟IP
Master主库服务器1 10.190.33.71 10.190.33.188
Master主库服务器2 10.190.33.72 待机预获mater01的VIP
Slave从库服务器01 10.190.33.73 10.190.33.189
Slave从库服务器02 10.190.33.74 10.190.33.190
Monitor服务器 10.190.33.75 *

实验拓扑图

在这里插入图片描述

数据库安装

MySQL安装教程

时间同步

所有服务器均需要进行配置(仅以Master服务器举例)

yum install -y chrony

vim /etc/chrony.conf 
	#注释原有ntp服务器,添加阿里ntp服务源
	server ntp.aliyun.com iburst
		
systemctl restart chronyd

chronyc sources -v

systemctl enable --now chronyd

在这里插入图片描述
在这里插入图片描述

搭建 MySQL 多主多从模式

修改MySQL配置文件

服务器均需要进行配置(仅以Master服务器1举例)

vim /etc/my.cnf
	······
##这里要改##
	server-id = *
##插入##
	log-error=/usr/local/mysql/data/mysql_error.log
	general_log=ON
	general_log_file=/usr/local/mysql/data/mysql_general.log
	slow_query_log=ON
	slow_query_log_file=mysql_slow_query.log
	long_query_time=5
	binlog-ignore-db=mysql,information_schema
	log_bin=mysql_bin
	log_slave_updates=true
	sync_binlog=1
	innodb_flush_log_at_trx_commit=1
	auto_increment_increment=2
	auto_increment_offset=1


systemctl restart mysqld


在这里插入图片描述

在这里插入图片描述

配置主主复制

Master服务器1、Master服务器2均需要进行配置

Master1
grant replication slave on *.* to 'slave'@'10.190.33.%' identified by 'slave123';

show master status;


在这里插入图片描述

Master2
grant replication slave on *.* to 'slave'@'10.190.33.%' identified by 'slave123';

show master status;


在这里插入图片描述

配置复制

####Master1服务器

change master to master_host='10.190.33.72',master_user='slave',master_password='slave123',master_log_file='mysql_bin.000001',master_log_pos=453;

start slave;

show slave status\G

####Master2服务器

change master to master_host='10.190.33.71',master_user='slave',master_password='slave123',master_log_file='mysql_bin.000001',master_log_pos=453;

start slave;

show slave status\G

在这里插入图片描述

在这里插入图片描述

配置主从复制

Slave服务器1、Slave服务器2均需要进行配置(仅以Slave服务器1举例)


change master to master_host='10.190.33.71',master_user='slave',master_password='slave123',master_log_file='mysql_bin.000001',master_log_pos=453;

start slave;

show slave status\G

在这里插入图片描述

安装配置 MySQL-MMM

安装 MySQL-MMM

所有服务器均需要进行配置(仅以Monitor服务器举例)

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install epel-release

yum -y install mysql-mmm*

在这里插入图片描述

对 MySQL-MMM 进行配置

所有服务器均需要进行配置(仅以Monitor服务器举例)

cd /etc/mysql-mmm/

vim mmm_common.conf
		······
		##修改##
		<host default>
			cluster_interface       ens33
			……
			replication_user        slave
			replication_password    slave123
			agent_user              agent
			agent_password          agent123

		<host db1>
			ip      10.190.33.71
			mode    master
			peer    db2
		</host>

		<host db2>
			ip      10.190.33.72
			mode    master
			peer    db1
		</host>

		<host db3>
			ip      10.190.33.73
			mode    slave
		</host>

		##复制<host db3>开始的4行粘贴到这##

		<host db4>
			ip      10.190.33.74
			mode    slave
		</host>

		<role writer>
			hosts   db1, db2
			ips     10.190.33.188
			mode    exclusive
		</role>

		<role reader>
			hosts   db3, db4
			ips      10.190.33.189, 10.190.33.190
			mode    balanced
		</role>

在这里插入图片描述

修改代理配置文件

所有数据库服务器均需要进行配置(仅以Master服务器1举例)

vim /etc/mysql-mmm/mmm_agent.conf

	include mmm_common.conf
	······
	this db*
		#根据不同的主机分别修改为 db1,db2,db3,db4上文hosdb配置

在这里插入图片描述

修改监控配置文件

==monitor服务器需要进行配置=

vim /etc/mysql-mmm/mmm_mon.conf

include mmm_common.conf
<monitor>
.....
    ping_ips        	10.190.33.71,10.190.33.72,10.190.33.73,10.190.33.74
	auto_set_online		15
</monitor>

<host default>
    monitor_user        monitor
    monitor_password    monitor123
</host>

在这里插入图片描述

授权代理进程、监控进程

所有数据库服务器均需要进行配置(仅以Master服务器1举例)

grant super, replication client, process on *.* to 'agent'@'10.190.33.%' identified by 'agent123';


grant replication client on *.* to 'monitor'@'10.190.33.%' identified by 'monitor123';


flush privileges;

在这里插入图片描述

启动服务

##在所有服务器上启动 mysql-mmm-agent

systemctl enable mysql-mmm-agent.service --now


##在 monitor 服务器上启动 mysql-mmm-monitor

systemctl enable mysql-mmm-monitor.service --now


在这里插入图片描述
在这里插入图片描述

测试

在 monitor 服务器

检测监控功能

mmm_control checks all

在这里插入图片描述

查看各节点的情况

mmm_control show

在这里插入图片描述

故障测试

## 停止 master01 确认 VIP 是否移动到 master02 上。注意:master01 主服务器恢复服务后,不会抢占

## Master服务器1
systemctl stop mysqld


## monitor服务器查看
mmm_control show


在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到