MySQL/MariaDB基于MMM实现读写分离及高可用

前言

MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。

MMM

优缺点

优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。

缺点:Monitor节点是单点,可以结合Keepalived实现高可用。

工作原理

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

实现过程

实验拓扑

#注:系统环境CentOS6.6

#VIP172.16.10.30为可写VIP,其他三组为可读VIP

#可写VIP只能在Master之间切换,可读VIP可在Master和Slave之间切换

#前端应用可连接任意可读VIP进行数据读取,连接可写VIP进行数据写入

双主一从配置

DB1配置

[root@node1 ~]# vim /etc/mysql/my.cnf

datadir = /mydata/data

log-bin=/mydata/binlogs/master-bin #二进制文件位置

relay-log=/mydata/relaylogs/relay-bin #中继日志位置

binlog_format=mixed

server-id = 1

auto_increment_offset=1 #双主复制中自增长字段的起始值

auto_increment_increment=2 #双主复制中自增长字段的步长

log_slave_updates = 1 #开启从库更新操作写入二进制日志功能

sync_binlog = 1 #可保证事务日志及时写入磁盘文件

skip-name-resolve #禁用DNS反向解析,如不写此项,则需要在各节点基于主机名通信

read_only = 1

[root@node1 ~]# service mysqld start

授权可用复制用户记录二进制日志位置

DB2配置

[root@node2 ~]# vim /etc/mysql/my.cnf

datadir = /mydata/data

log-bin=/mydata/binlogs/master-bin

relay-log=/mydata/relaylogs/relay-bin

binlog_format=mixed

server-id = 11

auto_increment_offset=2

auto_increment_increment=2

log_slave_updates = 1

sync_binlog = 1

skip-name-resolve

read_only = 1

[root@node2 ~]# service mysqld start

授权可用复制用户记录二进制日志位置

#因为实验之前都做了完整初始化,这里二进制文件位置一致

DB3配置

[root@scholar ~]# vim /etc/mysql/my.cnf

datadir = /mydata/data

relay-log=/mydata/relaylogs/relay-bin

server-id = 111

read_only = 1

skip-name-resolve

[root@scholar ~]# service mysqld start

连接各服务器

DB1连接DB2

DB2连接DB1

DB3连接DB1

主从测试

数据一致,主从复制部分完成

MMM配置

安装所需程序包

授权监控及代理用户

Monitor配置

DB1-DB3配置

启动服务

查看当前状态

查看各节点VIP状态

高可用测试

模拟db1故障,查看节点状态

再看db1的VIP状态

VIP已被转移到其他节点,其他方面有兴趣请自行测试,这里就不一一展示了

The end

MySQL/MariaDB基于MMM实现读写分离及高可用实验就先说到这里了,有兴趣的朋友可以继续探究基于Keepalived实现Monitor的高可用,这里就不做深究了。

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2016-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏迁移服务平台

腾讯云文件迁移使用指南

迁移上云的时候,会有迁移上腾讯云对象存储(cos)的需求,目前的迁移方案有两种:1、cos提供的COS Migration工具;2、客户自己利用友商和cos的a...

4144
来自专栏IT大咖说

VMware vSphere 6.7 新功能介绍

内容来源:2018 年 06 月 19 日,VMware大中华区原厂高级技术讲师姚泉在“VMware在线技术专题分享·第二期”进行《VMware vSphere...

5933
来自专栏开源项目

揭秘互联网防火墙核心技术 | 码云周刊第 55 期

在日益复杂的互联网活动中,一个网络防火墙扮演着防备潜在的恶意的活动的屏障,并可通过一个”门”来允许人们在你的安全网络和开放的不安全的网络之间通信。今天,小编推荐...

3273
来自专栏Java后端技术栈

大型网站技术架构总结一二

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

1382
来自专栏程序员互动联盟

【一起学python】基础环境搭建

联盟有个小伙伴,为了督促自己学习进步,决定把自己以前学的python重新梳理下,并且以文章的方式展示出来,联盟专门做一起学python系列专栏,鼓励这位小伙伴学...

3439
来自专栏王清培的专栏

后端服务性能压测实践

后端服务性能压测实践 标签(空格分隔): 性能 压测 后端服务 压测实践 作者:王清培(Plen wang) 背景 环境检测 压力机及压力工具检测 Linux...

8269
来自专栏杨建荣的学习笔记

你的备库做好准备了吗(r7笔记第78天)

这篇文章计划了一段时间,本来想写篇心情文字,还是留到周末再放飞心情吧。 今天的内容是关于数据库的备库的思考,当然我们可以自己问自己,我们的备库准备工作做好了吗?...

3777
来自专栏JAVA高级架构

大型网站技术架构

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分...

3826
来自专栏ThoughtWorks

大型项目程序配置管理演化之路|TW洞见

今日洞见 文章作者、图片来自ThoughtWorks:窦衍森。封面图片来自网络。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司...

3426
来自专栏jojo的技术小屋

原 荐 微信小程序、微信公众号、H5之间能相

3835

扫码关注云+社区

领取腾讯云代金券