如何部署MySQL-MMM高可用群集,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

简介

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

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

实验拓扑图

实验目标

搭建mysql高可用群集

实验环境

在5台服务器上关闭防火墙,安全性
setenforce 0
systemctl stop firewalld.service

实验步骤

一、master01、master02、slave01、slave02、monitor 5台mysql服务器配置
1.配置all云源(yum源)

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

2.配置epel源(最新版本)

yum -y install epel-release

3.加载元数据缓存

yum clean all && yum makecache`

4.安装mariadb数据库和mysql-mmm软件包

yum install mariadb-sever mariadb mysql-mmm* -y

5.修改mariadb数据库主配置文件

vim /etc/my.cnf
[mysqld]
log_error=/var/lib/mysql/mysql.err #错误日志
log=/var/lib/mysql/mysql_log.log #访问日志
log_slow_queries=/var/lib/mysql_slow_queris.log #慢日志
binlog-ignore-db=mysql,information_schema #不生成二进制日志文件
character_set_server=utf8 #字符集
log_bin=mysql_bin #开启二进制文件
server_id=1 #id号是唯一的
log_slave_updates=true #同步开启
sync_binlog=1 #同步二进制日志,1设为安全值
auto_increment_increment=2 #自增列,起点为1,增量为2
auto_increment_offset=1

备注:分别修改master02、slave01、slave02的配置文件server_id参数

6.启动mariadb 服务

systemctlenablemariadb#开机自启动mariadbsystemctlstartmariadb.service#启动mariadb服务

二、主、主复制(主服务器之间相互复制)
1.登录mariadb,在主服务器master1上授权

mysqlgrantreplicationslaveon*.*to'replication'@'192.168.65.%'identifiedby'123456';

2.在master1上指定master2的日志和位置参数

changemastertomaster_host='192.168.65.142',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

3.开启同步
start slave;

4.在主服务器master2上授权

mysqlgrantreplicationslaveon*.*to'replication'@'192.168.65.%'identifiedby'123456';

5.在master2上指定master1的日志和位置参数

changemastertomaster_host='192.168.65.159',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

6.开启同步

startslave;showslavestatus\G

7.从服务器同步主(两台从服务器都指向同一台主服务器)
两台从服务器同样操作:

mysqlchangemastertomaster_host='192.168.65.159',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;(#注意主服务器位置参数变化)startslave;#开启同步


8.测试:四台全部同步



三、配置mysql-MMM服务器(5台服务器都配置)
1.编辑mysql-mmm的配置文件

vimmmm_common.conf#所有主机都要配置,复制<hostdefault>cluster_interfaceens33#修改网卡为ens33pid_path/run/mysql-mmm-agent.pidbin_path/usr/libexec/mysql-mmm/replication_userreplicantionreplication_password123456#修改Mariadb给予权限的用户密码agent_usermmm_agentagent_password123456#修改agent客户端代理用户密码</host><hostdb1>#指定第一个数据库ip192.168.65.159#指定IP地址modemaster#模式为主服务器peerdb2#与db2互为切换</host><hostdb2>#指定第二个数据库ip192.168.65.142#指定IP地址modemaster#模式为主服务器peerdb1#与db1互为切换</host><hostdb3>#指定第二个数据库ip192.168.65.165#指定IP地址modeslave#模式为从服务器</host><hostdb4>#指定第二个数据库ip192.168.65.152#指定IP地址modeslave#模式为从服务器</host><rolewriter>#指定写入服务器hostsdb1,db2#指定db1,db2为写入服务器ips192.168.65.100#指定写入虚拟ip地址modeexclusive#模式为单独的(只能有一个)</role><rolereader>#指定读取服务器hostsdb3,db4#指定db1,db2为写入服务器ips192.168.65.101,192.168.100.65.102#指定读取虚拟ip地址modebalanced#模式为负载均衡,读取操作会从db3、db4主机进行

2.将配置文件传输到其它4台数据库服务器上

scpmmm_common.confroot@192.168.65.142:/etc/mysql-mmm/scpmmm_common.confroot@192.168.65.152:/etc/mysql-mmm/scpmmm_common.confroot@192.168.65.165:/etc/mysql-mmm/scpmmm_common.confroot@192.168.65.164:/etc/mysql-mmm/

备注:一定要去其它4台服务器上确认已修改!

3.monitor配置

cd/etc/mysql-mmm/vimmmm_mon.conf#改密码ping_ips192.168.65.159,192.168.65.142,192.168.65.152,192.168.65.165auto_set_online10#修改为10,表示10秒钟上线......省略部分内容<hostdefault>monitor_usermmm_monitor#监控机用户名monitor_password123456#修改密码</host>

4.在所有数据库上为mmm_agent授权
grant super,replication client,process on *.* to 'mmm_agent'@'192.168.65.%' identified by '123456';

6在所有数据库上为mmm_monitor授权

grantreplicationclienton*.*to'mmm_monitor'@'192.168.65.%'identifiedby'123456';flushprivileges;#刷新生效

7.在4台数据库上分别修改mmm_agent.conf

vimmmm_agent.confthisisdb1/2/3/4#在4台数据库分别修改

8启动mysql-mmm-agent

systemctlrestartmysql-mmm-agent.servicesystemctlenablemysql-mmm-agent.service

9.启动mysql-mmm-monitor
systemctl start mysql-mmm-monitor.service #启动服务

10.检查所有选项

mmm_controlshow#查看各节点情况mmm_controlchecksall

11.可以手动切换主服务器
mmm_control move_role writer db2

四、模拟故障
1.先停止db1,db3
systemctl stop mariadb

2.再查看mysql-mmm服务器状态
mmm_control show

3.恢复db1,db3上线

4.再查看mysql-mmm服务器状态
mmm_control show

5.当db1服务器恢复后,并不会抢占vip地址,而是作为备用机在等待着,
当db2下线后,再次查看

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。