MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序。
优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。当主服务器挂掉以后,另一个主立即接管,其他的从服务器能自动切换,不用人工干预。


master1 ip地址:192.168.60.135
master2 ip地址:192.168.60.136
slave1 ip地址:192.168.60.143
slave2 ip地址:192.168.60.144
monitor ip地址:192.168.60.130

mysql版本为mariadb,使用yum直接安装用于实验


一、所有主机配置yum源

1、配置ALI云源
wget -O /etc/yum.repos.d/CentOs-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

mysql群集架构mmm高可用群集_第1张图片

2、安装epel-release源
yum install epel-release -y
yum clean all & yum makecache


3、yum一键安装mariadb
yum install mariadb mariadb-server -y


4、修改配置文件
vim /etc/my.cnf
[mysqld]
log_error=/usr/local/mysql/data/mysql.err
log_slow_queries=/usr/local/data/mysql_slow_queris.log
log=/usr/local/mysql/data/mysql_log.log
binlog_ignore-db=mysql,information_schema
character_set_server=utf8
log_slave_updates=true
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1
log_bin=mysql-bin
server-id = 1 (每台的主机server-id不能相同)

mysql群集架构mmm高可用群集_第2张图片
mysql群集架构mmm高可用群集_第3张图片

5、启动mariadb
systemctl restart mariadb.service

mysql群集架构mmm高可用群集_第4张图片

二、主主复制

1、两台主服务器查看二进制文件以及偏移量
MariaDB [(none)]> show master status;

mysql群集架构mmm高可用群集_第5张图片

2、两台主服务器都需要授权
grant replication slave on . to 'replication'@'192.168.60.%' identified by '123456';


3、两台主服务器互相设置主(对应之前查看的二进制日志,以及偏移量)
change master to master_host='192.168.60.136',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=245;
change master to master_host='192.168.60.135',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=245;

mysql群集架构mmm高可用群集

show slave status; 查看slave状态

mysql群集架构mmm高可用群集_第6张图片

三、主从复制

1、查看任意一台主服务器的master状态

mysql群集架构mmm高可用群集_第7张图片

2、从服务器进行主从复制
change master to master_host='192.168.60.135',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=575;

mysql群集架构mmm高可用群集

3、查看状态

mysql群集架构mmm高可用群集_第8张图片

三、每台服务器都安装mysql-mmm*

1、yum安装
yum install mysqsl-mmm*


2、对mmm进行配置
vim /etc/mysql-mmm/mmm_common.conf

mysql群集架构mmm高可用群集_第9张图片
mysql群集架构mmm高可用群集_第10张图片

3、将配置覆盖给每台主机
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/
scp mmm_common.conf [email protected]:/etc/mysql-mmm/

mysql群集架构mmm高可用群集_第11张图片

四、监控服务器

1、修改配置文件

mysql群集架构mmm高可用群集_第12张图片

2、每天mysql主机给代理用户,监控用户授权
grant super,replication client,process on . to 'mmm_agent'@'192.168.60.%' identified by '123456';
grant replication client on . to 'mmm_monitor'@'192.168.60.%' identified by '123456';
flush privileges;

mysql群集架构mmm高可用群集_第13张图片

3、每台mysql主机修改各自身份
vim /etc/mysql-mmm/mmm_agent.conf
主1 db1
主2 db2
从1 db3
从2 db4

mysql群集架构mmm高可用群集_第14张图片

4、mysql服务器开启代理服务
systemctl start mysql-mmm-agent.service


5、监控服务器开启监控服务
systemctl start mysql-mmm-monitor.service


6、监控服务器查看各监控点状态
mmm_control show

mysql群集架构mmm高可用群集

7、在有虚拟IP的那台主机上授权登陆用户

mysql群集架构mmm高可用群集

mysql群集架构mmm高可用群集_第15张图片

8、关掉一台主机的mysql服务,看虚拟地址会不会移动

mysql群集架构mmm高可用群集
mysql群集架构mmm高可用群集_第16张图片

9、再关掉一台从服务器,看虚拟IP移动

mysql群集架构mmm高可用群集
end~