MMM简介:

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

MMM高可用架构的说明:

1.mmm_mon:监控进程,负责所有的监控工作,决定和处理所有节点角色活动。此脚本需要在监管机上运行
2.mmm_agent:运行在每个Mysql服务器上的代理进程,完成监控的探针工作和执行简单的远端服务设置。此脚本需要在各节点上运行
3.mmm_control:一个简单的脚本,提供管理mmm_mond进程的命令
4.mysql-mmm的监控端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用的Mysql之上,当某一台Mysql宕机时,监控会将VIP迁移至其他Mysql
在整个监管过程中,需要在Mysql中添加相关授权用户,以便让Mysql可以支持监理机的维护。授权的用户包括一个mmm_monitor和一个mmm_agent用户。

实验案例环境部署:

本实验使用五台服务器模拟搭建(CentOS7 操作系统 )
主服务器master1 : ip:192.168.100.10 db1 vip: 192.168.100.199
主服务器master2:ip: 192.168.100.20 db2
从服务器 slave1 : ip:192.168.100.30 db3 vip: 192.168.100.33
从服务器 slave2: ip: 192.168.100.40 db4 vip: 192.168.100.44
监控服务器 monitor ip: 192.168.100.50


实验的过程已整理好脚本如下:

----------master01/master02/slave01/slave02都需要安装mysql数据库-----
配置ALI云源,然后安装epel-release源。 (四台主从服务器都需要装)
systemctl stop firewalld.service
setenforce 0
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release //安装epel源
yum clean all && yum makecache //清空所有,重新设置数据缓存


----------搭建本地yum源----------下面直接做-----------------
yum -y install mariadb-server mariadb (四台主从服务器都需要装)
systemctl stop firewalld.service
setenforce 0
systemctl start mariadb


----------修改ml主配置文件-----------(四台主从服务器都需要)-------------------------
vi /etc/my.cnf (9dd删掉之前的内容)
vi /etc/my.cnf (9dd删掉[mysqld]标签之前的内容,重新插入下面的配置)
[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 //设置默认的字符集为utf-8
log_bin=mysql_bin //开启二进制日志,用于主从数据复制
server_id=1 //每台server_id的值不能相同
log_slave_updates=true //此数据库宕机,备用数据库接管
sync_binlog=1
auto_increment_increment=2 //字段一次递增2
auto_increment_offset=1 //自增字段的起始值:1,3,5,7.........等奇数ID


修改完后:
systemctl stop firewalld.service
setenforce 0
systemctl start mariadb
netstat -anpt | grep 3306


-------------没有问题后,把配置文件复制到其他3台数据库服务器上并启动服务器----------
一台一台配置 或:scp /etc/my.cnf root@192.168.100.10:/etc/ //此命令在文件源端服务器上执行
注:第二台server_id=2 第三台11 第四台22


-------------配置主主复制----两台主服务器互相复制---------------------------------------
show master status; //记录日志文件名称和位置,在两台主上查看。
-----在m1上为m2授予从的权限,在m2上也要给m1授予从的权限----
grant replication slave on . to 'replication' @'192.168.100.%' identified by '123456'; //两台主都执行,从不需要

change master to master_host='192.168.100.20',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;
注意:在m1上要指定m2上的日志文件名和位置参数。在m2上要反过来指定m1的。(注意其中要改的IP地址、文件名及偏移量)

start slave; //开启同步功能
show slave status\G;
Slave_I0_Running: Yes
Slave_SQL_Running: Yes


----------------在两台从上做------注意日志文件和位置参数的改变--------------
注:两台从都需要指向其中的一台主服务器(这里指向m1)
change master to master_host='192.168.100.10',master_user='replication',master_password='123456',master_log_file='mysql_bin.000003',master_log_pos=245;

start slave; //开启同步
show slave status\G;//查看状态


---------------测试主从、主主、同步情况------------
建立数据库然后测试同步情况


----------------安装MMM-----在所有服务器上安装--------注意,epel源要配置好
yum -y install mysql-mmm*


----------------安装结束后 对mmm进行配置---------------------------------
cd /etc/mysql-mmm/
vim mmm_common.conf //所有主机上都要配置,直接复制多份
<host default>
cluster_interface ens33
.....
replication_user replication
replication_password 123456
agent_user mmm_agent
agent_password 123456

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

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

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

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

<role writer>
hosts db1,db2
ips 192.168.100.199 //虚拟IP
mode exclusive
</role>

<role reader>
hosts db3,db4
ips 192.168.100.33, 192.168.100.44 //虚拟IP
mode balanced
</role>

远程复制 覆盖配置文件:
scp mmm_common.conf root@192.168.100.20:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.30:/etc/mysql-mmm/
scp mmm_common.conf root@192.168.100.40:/etc/mysql-mmm/
vim /etc/mysql-mmm/mmm_common.conf 挨个查看一下


-----------最后一台监控服务器也需要安装mmm--------(epel源先装好)------
systemctl stop firewalld.service
setenforce 0
wget -0 /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum clean all && yum makecache (可不执行)
yum install -y mysql-mmm*
scp mmm_common.conf root@192.168.100.50:/etc/mysql-mmm/ //在m1上执行


--------------在monitor服务器上配置---------------------------------------
cd /etc/mysql-mmm/
vim mmm_mon.conf
ping_ips 192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40 //监视器监听的服务器地址
auto_set_online 10 //自动上线时间10秒
<host default>
monitor_user mmm_monitor
monitor_password 123456 //改密码
</host>


---------------在所有数据库上为mmm_agent授权----------(进入数据库)-----------------
grant super, replication client, process on . to 'mmm_agent'@'192.168.100.%' identified by '123456';


---------------在所有数据库上为mmm_moniter授权---------(进入数据库)------------------
grant replication client on . to 'mmm_monitor'@'192.168.48.%' identified by '123456';

flush privileges; //刷新


---------------修改所有数据库的mmm_agent.conf---------------------------------------------
vim /etc/mysql-mmm/mmm_agent.conf
this db1 //根据之前代理名称的规划进行逐一调整


----------------在所在数据库服务器上启动mysql-mmm-agent----------------------------------
systemctl start mysql-mmm-agent.service
systemctl enable mysql-mmm-agent.service //开机自启动


----------------在monitor服务器上配置----------------------------------------------------------
cd /etc/mysql-mmm/
vim mmm_mon.conf
..........
ping_ips
192.168.100.10,192.168.100.20,192.168.100.30,192.168.100.40 //数据库服务器地址

auto_set_online 10 //自动上线时间10秒
........
systemctl start mysql-mmm-monitor.service //启动监控服务mysql-mmm-montior

mmm_control show //查看各节点的情况:
db1(192.168.235.132) master/ONLINE. Roles:writer(192.168.100.199)
db2(192.168.235.191) master/ONLINE. Roles:
db3(192.168.235.177) slave/ONLINE. Roles:reader(192.168.100.33)
db4(192.168.235.181) slave/ONLINE. Roles:reader(192.168.100.44)

mmm_control checks all //需要各种OK
mmm_control move_role writer db2 //将虚拟IP200切换到db2服务器上

service mariadb restart //监控机做客户端
systemctl restart mysql-mmm-agent


-----------------------故障测试-----------------------------------------------
停止m1 确认 虚拟地址 200 是否移动到m2上。 注意:主不会抢占。
systemctl stop mariadb.service

然后再监控服务器上 ,查看是否切换到m2上:mmm_control show


可以把从服务器一台也关掉 试一下。 注意:从会抢占

在m1服务器上进数据库为监控机地址授权登录
grant all on . to 'testdba'@'192.168.100.50' identified by '123456';
flush privileges; //刷新

按理来讲监控服务器只单独充当监控这一角色就行了,这里临时将它也作为客户端来配置一下:
yum install -y mariadb-server mariadb


------------------在监控服务器上登录-------------------------------------------
mysql -utestdba -p -h 192.168.100.199 //虚拟地址
创建数据,测试同步情况

脚本到此结束!

本篇总结

.MySQL-MMM适用于数据的一致性要求不是很高,但是又想最大程度地保证业务可用性的场景。

转载于:https://blog.51cto.com/13721050/2174276

MySQL高可用群集------配置MMM高可用架构相关推荐

  1. HaProxy+Keepalived+Mycat高可用群集配置 - pursuer.chen - 博客园

    HaProxy+Keepalived+Mycat高可用群集配置 - pursuer.chen - 博客园

  2. 详解 MySQL 高可用群集,MMM搭建高可用

    目录: 1·MMM 简介 2·MMM 各个角色说明 3·案例环境介绍 4·案例实施 5·总结 一:MMM 简介: 1)MMM 是什么:说得简单点,就是 MySQL 主主复制的管理器.之前的一篇文章讲述 ...

  3. HaProxy+Keepalived+Mycat高可用群集配置

    概述 本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章. 部署图: 配置  HaProxy安装 181和1 ...

  4. 实现MySQL高可用群集配置_配置高可用性的MySQL服务器负载均衡群集

    mysql -u root -p USE mysqlclustertest; SELECT * FROM testtable; quit; SELECT查询出的结果应该依然是: mysql> S ...

  5. 基于ISCSI共享存储的KVM高可用群集配置

    实验目的:运行的虚拟机可以在线平滑迁移,不会终端虚拟机运行的业务 高可用架构:pacemaker+corosync 并由pcs进行管理 系统环境:三台机器都是最新的centos7.4 所需组件: DL ...

  6. win10系统 计算机配置要求高吗,win10配置要求高还是win7配置要求高

    原标题:"小编教你win10配置要求"关于电脑问题教程分享. - 来源:191路由网 - 编辑:小元. 继Win8的不温不火后,微软直接跳过了Win9开发Win10系统.也许是Wi ...

  7. Mysql的MMM高可用群集

    文章目录 一.Mysql-MMM群集概述 (1)MMM概述 (2)MMM的优缺点 (3)MMM进程 `(脚本)` 的作用 (4)MMM的工作架构 二.搭建Mysql-MMM高可用群集 (1)实验环境 ...

  8. MySQL 数据库之 MMM 高可用架构构建

    文章目录 一.MMM 概述 1. 什么是 MMM 2. 应用场景 3. MMM 特点 4. 关于 MMM 高可用架构的说明 5. 用户及授权 二.案例环境 1. 服务器配置 2. 服务器环境 3. 修 ...

  9. heartbeat+drbd+mysql构建mysql高可用群集

    heartbeat+drbd+mysql构建mysql高可用群集 1. 试验环境: 操作系统:Red Hat Enterprise Linux 5.4 所需的软件包: mysql-5.5.22.tar ...

最新文章

  1. LeetCode中等题之特殊等价字符串组
  2. 干货丨机器学习和深度学习概念入门
  3. 泛函分析4——希尔伯特空间
  4. 前缀和,差分算法训练
  5. 团体程序设计天梯赛-练习集L1-011 A-B (20分)getline输入
  6. kafka官方文档学习笔记3--配置简述
  7. uni-app项目实现客服、用户聊天
  8. C++中在使用自定义类型(结构体类型)的stl数据结构时,operate的用法
  9. 对于von Mises distribution(冯·米塞斯分布)的一点心得
  10. Excel巧做项目管理
  11. 解决Chromedriver报错Original error: chrome not reachable
  12. Java解析PDF文件(PDFBOX、itext解析PDF)导出PDF中的子图片,去除PDF中的水印
  13. 汉诺塔——老夫不管什么分析不分析,直接粗暴
  14. 洛谷P1896 互不侵犯【状压DP】
  15. 关于以太网光纤收发器,逻辑隔离与物理隔离的理解与区别
  16. “比特”与“瓦特”深度融合,云计算驶向绿色低碳快车道
  17. CG动画制作项目第五篇:AE中火焰效果的实现(particular的使用)
  18. Vue2.0源码解析 - 知其然知其所以然之keep-alive
  19. Django 模型层(models) 复杂查询详解
  20. AI与轨交并行,智慧服务伴乘客出行

热门文章

  1. ERPLAB中文教程:高级EvenList选项
  2. 一些有意思的VR设备介绍
  3. [unreal4入门系列之八] 使用VS编译UE4编辑器并添加物体到场景中
  4. 在悬崖下得到鸿蒙塔,第一次夜宿在悬崖峭壁上:垂直高度356米,峡谷深渊就在边上...
  5. 谷歌Colab也搞“超级会员”,普通会员云GPU被降级,想用高端得加钱
  6. 终于!北京无人车,今起也能免费坐
  7. 对话Nullmax无人车CEO徐雷:造血营收L3,追梦宏图L4
  8. Fiddler (三) Composer创建和发送HTTP Request
  9. mybatis 思维导图,让 mybatis 不再难懂(二)
  10. docker 常用操作