MySQL主从模式,一主多从、读写分离等。但是单主如果发生单点故障,从库切换成主库还需要作改动。因此,如果是双主或者多主,就会增加MySQL入口,提升了主库的可用性。 因此随着业务的发展,数据库架构可以由主从模式演变为双主模式。双主模式是指两台服务器互为主从,任何一台服务器数据变更,都会通过复制应用到另外一方的数据库中

一, 双主双写&是双主单写

双主双写存在以下问题:

  • ID冲突

在A主库写入,当A数据未同步到B主库时,对B主库写入,如果采用自动递增容易发生ID主键的冲 突。 可以采用MySQL自身的自动增长步长。

  • 更新丢失

同一条记录在两个主库中进行更新,会发生前面覆盖后面的更新丢失。

Mysql高可用架构

二,MMM架构

是一套用来管理和监控双主复制,支持双 主故障切换 的第三方软件。MMM 使用Perl语言开发,虽然是双主架构,但是业务上同一时间只允许一 个节点进行写入操作(双主单写)

 MMM故障处理机制:

MMM 包含writer和reader两类角色,分别对应写节点和读节点,当 writer节点出现故障,程序会自动移除该节点上的VIP 写操作切换到 Master2,并将Master2设置为writer 将所有Slave节点会指向Master2;除了管理双主节点,MMM 也会管理 Slave 节点,在出现宕机、复制延迟或复制错误,MMM 会移 除该节点的 VIP,直到节点恢复正常。

MMM监控机制:

MMM 包含monitor和agent两类程序,monitor:监控集群内数据库的状态,在出现异常时发布切换命令,一般和数据库分开部署。 agent:运行在每个 MySQL 服务器上的代理进程,monitor 命令的执行者,完成监控的探针工作和具体服务设置,例如设置 VIP(虚拟IP)、指向新同步节点。

三,MHA架构

在MySQL故障切换过程中,MHA能做到在30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的 高可用。MHA还支持在线快速将Master切换到其他主机,通常只需0.5-2秒。 目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器。

MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点):

  • MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台 slave节点上。负责检测master是否宕机、控制故障转移、检查MySQL复制状况等。
  • MHA Node运行在每台MySQL服务器上,不管是Master角色,还是Slave角色,都称为Node,是 被监控管理的对象节点,负责保存和复制master的二进制日志、识别差异的中继日志事件并将其 差异的事件应用于其他的slave、清除中继日志。

MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的 slave提升为新的master,然后将所有其他的slave重新指向新的master,整个故障转移过程对应用程序 完全透明。

MHA故障处理机制:

  • 把宕机master的binlog保存下来
  • 根据binlog位置点找到最新的slave
  • 用最新slave的relay log修复其它slave
  • 将保存下来的binlog在最新的slave上恢复
  • 将最新的slave提升为master
  • 将其它slave重新指向新提升的master,并开启主从复

MHA优点:

  • 自动故障转移快
  • 主库崩溃不存在数据一致性问题
  • 性能优秀,支持半同步复制和异步复制
  • 一个Manager监控节点可以监控多个集群

四,主备切换策略

主备切换是指将备库变为主库,主库变为备库,有可靠性优先可用性优先两种策略。

可靠性优先:

主备切换过程一般由专门的HA高可用组件完成,但是切换过程中会存在短时间不可用,因为在切 换过程中某一时刻主库A和从库B都处于只读状态

  1. 判断从库B的Seconds_Behind_Master值,当小于某个值才继续下一步
  2. 把主库A改为只读状态(readonly=true)
  3. 等待从库B的Seconds_Behind_Master值降为 0 把从库B改为可读写状态(readonly=false)
  4. 把业务请求切换至从库B

可用性优先:

不等主从同步完成, 直接把业务请求切换至从库B ,并且让从库B可读写 ,这样几乎不存在不可 用时间,但可能会数据不一致

  • 主库A执行完 INSERT c=4 ,得到 (4,4) ,然后开始执行 主从切换
  • 主从之间有5S的同步延迟,从库B会先执行 INSERT c=5 ,得到 (4,5)
  • 从库B执行主库A传过来的binlog日志 INSERT c=4 ,得到 (5,4)
  • 主库A执行从库B传过来的binlog日志 INSERT c=5 ,得到 (5,5)
  • 此时主库A和从库B会有 两行 不一致的数据

附: 参考资料《MySQL技术内幕 InnoDB存储引擎》

Mysql集群--双主模式相关推荐

  1. Mysql 集群双主双从安装使用详细讲解

    文章目录 下载Mysql 安装单机Mysql 配置Mysql集群 双Master配置 master1配置 master2配置 配置说明 双Slave配置 Slave1配置 Slave2配置 双 Mas ...

  2. OpenResty+Keepalived组建高可用集群+双主模式

    * 环境: system version:CentOS Linux release 7.5.1804 (Core) 3.10.0-862.9.1.el7.x86_64 nginx version:op ...

  3. MySQL数据库集群(双主双从)

    文章目录 MySQL数据库集群(双主双从) 实验环境 双主双从 双主 双从 进行测试 MySQL数据库集群(双主双从) 实验环境 保证每台centos7服务器配置静态的IP,初始化服务器,关闭防火前和 ...

  4. mysql hma 分布式_mysql基础之mariadb集群双主(主主)架构

    一.概念 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加m ...

  5. Docker Harbor 2.3.4 集群 双主复制高可用镜像仓库

    下面操作大部分是双节点同时执行一样的命令,不同的地方我会进行标注和特殊说明 文章目录 一.环境准备 1. 环境要求 2. 节点总览 3. 安装docker-compose 二.安装harbor 2.1 ...

  6. MySQL集群搭建——主备模式

    参考: https://segmentfault.com/a/1190000017049567

  7. MySQL集群:主从模式

    目录 1.mysql主从复制用途 2.主从部署必要条件 3.主从模式实现原理 3.1.主从复制 3.2.半同步复制 3.3.并行复制 3.3.1.MySQL5.6并行复制原理 3.3.2.MySQL5 ...

  8. 集群——双主双从时,从服务器只同步一台主服务器数据

    设置好两台从服务器后,在设置两台从服务器,其中第一台从服务器用的备份是之前的,当手动恢复数据后,数据不能同步到后面的数据,于是,我清除数据库,打算从新做, # systemctl stop mysql ...

  9. MySQL集群(四)之keepalived实现mysql双主高可用

    前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Kee ...

最新文章

  1. 【Python】Excel处理
  2. EasyUI中拖动draggable的使用
  3. 创建或更改表 tablename 失败_mysql 创建用户
  4. 从贪心选择到探索决策:基于强化学习的多样性排序
  5. GitHub 标星 11000+,阿里开源微服务如何连续 10 年扛住双十一大促
  6. C++|Linux工作笔记-C++获取Linux中shell命令结果
  7. nvidia 桌面录屏
  8. OO第二单元作业分析
  9. LeetCode81. 搜索旋转排序数组 II(二分查找)
  10. python和c先学哪个-C 和 Python语言先学哪个好?
  11. 【数据结构和算法】拓扑排序(附leetcode题 207/210 课程表)
  12. mysql配置文件路径
  13. 【笔记】深入理解 Java 虚拟机:类文件结构
  14. 使用WangEditor编辑器使用图片上传功能
  15. java开发需要英语吗_学习Java开发英语不好的可以学吗?
  16. 随机生成20个手机号码
  17. 背包问题C/C++语言
  18. 【证券】什么是开仓、持仓和平仓?
  19. 百度凤巢系统的关键词
  20. Thread类的详细介绍

热门文章

  1. Apache Beam指南
  2. X-Pool:多伦多大学提出基于文本的视频聚合方式,在视频文本检索上达到SOTA性能!(CVPR 2022)...
  3. 伪类选择器:checked
  4. 网络流(所有常用类型网络流算法的模板)
  5. 命令查看主板和CPU温度
  6. 如何查看网站服务器到期时间吗,如何查看云服务器到期时间
  7. Free Nas搭建
  8. APSIM实战练习:Kingsthorpe土壤水分蒸发研究
  9. 百思不得姐数据刷新数据部分(七)
  10. 大数据改变朝阳大悦城