Mysql-MMM高可用群集

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

Mmm高可用架构说明?:

mmm_mon?? 负责所有的监控工作的监控守护进程,决定节点的移除等等
mmm_agent? ? 运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监 控节点
mmm_control??通过命令行管理mmm_mond进程
mysql-mmm 监管端会提供多个虚拟IP,包括一个可写,多个可读,这些IP会绑定在可用mysql上,当一台发生宕机时,监管会将VIP迁移至其他mysql上
实验拓扑:

实验环境

主机 操作系统 IP地址 虚拟IP
mysql- master1(db1) CentOS-7-x86_64 192.168.37.128 192.168.37.150
mysql- master2(db2) CentOS-7-x86_64 192.168.37.130 192.168.37.150
mysql- slave1(db3) CentOS-7-x86_64 192.168.37.131 192.168.37.160
mysql- slave2(db4) CentOS-7-x86_64 192.168.37.132 192.168.37.160
monitor CentOS-7-x86_64 192.168.37.1326 ---

实验过程:
一、主从服务器安装mariadb
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

yum install mariadb-sever mariadb -y

5、关闭防火墙、安全功能

systemctl stop firewalld.service
setenforce 0

二、修改配置文件
6、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 #mysql,information_schema 不生成二进制日志文件
character_set_server=utf8 #字符集
log_bin=mysql_bin #开启二进制文件
server_id=1 #进行修改
log_slave_updates=true #同步开启
sync_binlog=1 #同步二进制日志,1设为安全值
auto_increment_increment=2 #自增列,起点为1,增量为2
auto_increment_offset=1

7、配置文件复制到其他三台服务器

scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/
scp /etc/my.cnf [email protected]:/etc/
#复制时需要输入对方的root密码,并修改其他三台服务器的server-id

8、开启mariadb服务

systemctl start mariadb.service

三、主服务器授权同步
9、在master1上授权

grant replication slave on . to ‘replication‘@‘192.168.37.%‘ identified by ‘123456‘;
show master status; #查看master2 的日志及位置参数

change master to master_host=‘192.168.37.130‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000003‘,master_log_pos=245;
start slave; #开启同步
show slave status\G ; #查看master1同步情况

10、在master2上授权

grant replication slave on . to ‘replication‘@‘192.168.37.%‘ identified by ‘123456‘;
show master status; #查看master1的日志及位置参数

change master to master_host=‘192.168.37.128‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000003‘,master_log_pos=410;
start slave; #开启同步
show slave status\G ; #查看master2同步情况


四、从服务器同步主服务器
11、两台从服务器执行同样操作:

change master to master_host=‘192.168.37.128‘,master_user=‘replication‘,master_password=‘123456‘,master_log_file=‘mysql_bin.000003‘,master_log_pos=410;
#注意要同步的主服务器的日志及位置参数变化,使用最新的。



12、测试四台服务器同步:在master1中新建数据库school,查看其它服务器是否也存在数据库school


测试成功!
五、安装MMM高群集(四台服务器)
13、yum安装mmm

yum install mysql-mmm* -y

14、编辑配置文件

vim /etc/mysql-mmm/mmm_common.conf

<host default>

cluster_interface ens33 #网卡
pid_path /run/mysql-mmm-agent.pid
bin_path /usr/libexec/mysql-mmm/
replication_user replication #授权的mysql用户
replication_password 123456 #授权用户密码
agent_user mmm_agent #代理用户
agent_password 123456
</host>
<host db1>
ip 192.168.37.128
mode master
peer db2
</host>

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

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

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

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

<role reader>
hosts db3, db4
ips 192.168.37.160, 192.168.100.37.170
mode balanced

15、然后将配置复制给其它服务器,复制完回车后,输入对方root密码

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/

六、安装monitor
16、配置ALL源(yum源):

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

17、配置epel源

yum -y install epel-release

18、加载元数据缓存

yum clean all && yum makecache

19、yum安装mmm

yum install mysql-mmm* -y

20、在master1上复制给monitor

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

21、编辑配置文件

vim /etc/mysql-mmm/ mmm_mon.conf

22、在所有数据库上为mmm_agent授权

grant super,replication client,process on . to ‘mmm_agent‘@‘192.168.37.%‘ identified by ‘123456‘;

23、在所有数据库上为mmm_monitor授权

grant replication client on . to ‘mmm_monitor‘@‘192.168.37.%‘ identified by ‘123456‘;
flush privileges; #授权后刷新权限


24、在所有服务器上修改mmm_agent.conf

vim /etc/mysql-mmm/mmm_agent.conf
this is db1/2/3/4

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

systemctl start mysql-mmm-agent.service #开启服务
systemctl enable mysql-mmm-agent.service #开机自启动

26、在monitor上启动监控服务

systemctl start mysql-mmm-monitor.service
systemctl stop firewalld.service
setenforce 0

27、查看各节点情况

mmm_control show
#如果不能连接 在master1上执行 mysql>flush privileges;

28、虚拟IP手动切换

mmm_control move_role writer db2 #虚拟IP转给db2

29、故障测试:
1)断掉主服务器sdb1,则虚拟IP会漂移到主服务器sdb2,但是如果sdb1恢复,不会抢占,只可以手动切换。

2)断掉从服务器sdb3,则虚拟IP会漂移到从服务器sdb4,如果sdb3恢复,则重新抢占。

这样,如果其中一台主服务器或者从服务器宕机,虚拟IP会漂移到另一台可用的服务器上,从而实现高可用群集。

原文地址:http://blog.51cto.com/13784264/2174494

时间: 2024-11-10 20:34:11

Mysql-MMM高可用群集的相关文章

MySQL—MMM高可用群集的搭建(全过程,纯干货~~)

本篇文章主要介绍搭建MMM方案以及MMM架构的原理.MMM方案不适用对数据一致性要求很高的业务.下面一起来学习学习. 先来看看具体的架构拓扑,如下: 其中, 角色 Hosts IP地址 应用属性 VIP master1 master 192.168.142.135 write 192.168.142.188 master2 backup 192.168.142.132 write|read 192.168.142.188 slave1 slave 192.168.142.136 read 192

Mysql MMM 高可用

一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给监控节点: mmm_control  命令行管理mmm_mond进程: Monitor:192.168.209.18 DB1:192.168.209.19 DB2:192.168.209.20 DB3:192.168.209.21   virtual write ip:192.168.209.4 v

MySQL数据库——MMM高可用群集架构

概念 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM高可用架构说明 mmm_mond:监控进程,负责所有的监控工作,决定和处理所有节点角色活动.此脚本需要在监管机上运行. mmm_agentd:运行在每个mysql服务器上的代理

MySQL数据库——MMM高可用群集配置(实战!)

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

MMM高可用群集

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

mysql 群集架构mmm高可用群集及服务器上线

MMM即Multi-Master Replication Manager for MySQL:mysql多主复制管理器,基于perl实现,关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),MMM也能对从服务器进行读负载均衡,所以可以用它来在一组用于复制的服务器启动虚拟ip,除此之外,它还有实现数据备份.节点之间重新同步功能的脚本. 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致

MySQL——mmm高可用(实践!)

MySQL-MMM优缺点: 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepalived实现高可用. MySQL-MMM工作原理:  MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master

MySQL——MMM高可用

MySQL-MMM优缺点: 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepalived实现高可用. 实验环境: master1服务器 192.168.13.167 master2服务器 192.168.13.151 slave1服务器 192.168.13.168 slave2服务器 192.168.13.145 monitor服务器 192.168.13.164 1.在maste

mysql群集架构mmm高可用群集

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

MySQL mmm 高可用配置

10.10.10.20:监控端 10.10.10.21:主 10.10.10.22:主 10.10.10.23:从 10.10.10.24:从 yum -y install mysql mysql-server service mysqld start yum -y install mysql-mmm* useradd --comment "MMM Script owner" --shell /sbin/nologin mmmd yum -y install perl-Time-HiR