双主架构图

双主架构实现原理
当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到从库上,实现主从数据同步。
如果SQL线程发现该事件的server_id与当前从库的server_id相同,则会丢弃该事件,因此如果两台MySQL如何互为主从,不会导致相同的事件被重复执行。

双主架构设计目标
在一套MySQL复制群集中,通过双主或多主架构,解决一主多从架构的单点故障,减少主从切换的故障处理时间,增加MySQL群集的高可用性。

双主架构实现方案
1、主备模式,两台MySQL互为主从,其中一台作为主节点对外提供服务,另外一台作为备机节点(standby),当提供服务的主节点发生故障后,将服务请求快速切换到备用节点,原主节点故障恢复后转换为备用节点(standby)。

2、主主模式,两台MySQL互为主从,且两台MySQL均作为主节点对外提供服务,当其中一台MySQL发生故障后,将指向该故障节点的请求快速切换到另外一台MySQL,原来指向非故障节点的请求不受影响。

在主主模式下,两个主库都提供读写服务,如果应用通过两个主库操作相同数据,则会发生冲突导致数据覆盖(使用语句模式复制)或复制异常(使用行模式复制),因此需要对读写服务进行控制:
1、基于自主主键控制,通过设置自增属性auto_increment_offset和auto_increment_increment来控制每个主节点生产不同的自增值,并根据不同自增值访问不同主节点。
2、基于库级别或表级别控制,如应用APP1访问节点node1上的DB1库,而应用APP2访问节点node2上的DB2库,两个主节点间不会操作相同表的数据,因此不会存在事务冲突。

为保证应用程序使用相同数据库连接配置而不受故障切换影响,常用方案有:
1、VIP,通过vrrpd或keepalived将VIP动态绑定到新主节点
2、域名,通过切换域名将域名指向新主节点
3、代理,通过更新代理中存放的路由信息来指向新主节点。

双主架构优点
1、主主模式能将读写请求分摊到两个主节点,有效提升服务器使用率。
2、主节点发生故障后,能快速进行主从切换。
3、当故障节点恢复后,故障节点能通过复制进行数据恢复(应用其他节点数据)和数据同步(将未同步数据发生给其他节点)。

双主架构缺点
1、当主节点上MySQL实例发生故障后,可能会存在部分数据(Binlog)未同步到另外的主节点,导致数据丢失(直到故障节点恢复)。
2、主主模式下,很容易因数据访问控制不当导致数据冲突。
3、为提高系统高可用性,双主架构会被扩展成双主多从结构,同样存在主节点发生故障后多个从库选主和恢复复制的问题。

MMM架构

在双主架构下,MySQL本身并没有自动故障切换能力,Google开源项目MySQL-MMM(Master-Master Replication Manager for MySQL)能够用来监控MySQL主主复制并实现自动故障转移。

在使用after_sync的半同步复制的双主架构下,能有效确保两个主库的BINLOG同步,再配合MMM工具实现自动故障转移,确保群集高可用。

MySQL双主结构优缺点相关推荐

  1. MySQL主从复制-双主结构

    1:安装命令 2台机分别安装 yum –y install mysql-server 2:配置登陆用户的密码root /usr/bin/mysqladmin -u root password 'roo ...

  2. mysql 主从复制 表结构_MySQL主从复制-双主结构

    1:安装命令 2台机分别安装 yum –y install mysql-server 2:配置登陆用户的密码root /usr/bin/mysqladmin -u root password 'roo ...

  3. keepalived mysql双主架构图_基于MySQL双主的高可用解决方案理论及实践

    MySQL在互联网应用中已经遍地开花,但是在银行系统中,还在生根发芽的阶段.本文记录的是根据某生产系统实际需求,对数据库高可用方案从需求.各高可用技术特点对比.实施.测试等过程进行整理,完善Mysql ...

  4. mysql双主故障自动切换_MySQL主库高可用 -- 双主单活故障自动切换方案

    前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用.更安全.后来又经过思考,对脚本中一些条件和行为做了些改变.经过几次修 ...

  5. mysql双主不同步问题

    1:碰到的问题 mysql双主数据库数据不同步 错误提示类似于:1032等,不仅1032我跳过后还有其他的各种问题 查询网上后,基本是两种解决方案1:直接跳过这一步错误,但是因为不同步太多了,跳过之后 ...

  6. MySQL双主架构介绍

    文章目录 一.背景 二.MySQL双主(主主)架构方案 三.MySQL双主架构图 四.MySQL双主架构的优缺点 一.背景 MySQL 主从模式优点 容灾:主数据库宕机后,启动从数据库,用于故障切换 ...

  7. 面试官: Redis 与 MySQL 双写一致性如何保证?

    前言 四月份的时候,有位好朋友去美团面试.他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题. ...

  8. 美团二面:Redis与MySQL双写一致性如何保证?

    前言 四月份的时候,有位好朋友去美团面试.他说,被问到Redis与MySQL双写一致性如何保证?这道题其实就是在问缓存和数据库在双写场景下,一致性是如何保证的?本文将跟大家一起来探讨如何回答这个问题. ...

  9. mysql双主使用reset master清除日志要小心

    假设a.b两台服务器做了mysql双主. 有一表是tab是这样的 create table tab(id int primary key auto_increment,name varchar(20) ...

最新文章

  1. PCL点云库用贪婪投影三角法网格化实现点云的表面重建
  2. Find a way
  3. 小师妹学JavaIO之:NIO中Channel的妙用
  4. C#异步批量下载文件
  5. 纯靠技术,很难进入大厂了。。。
  6. 175. Combine Two Tables
  7. 网卡流量监控工具vnstat的使用
  8. 学计算机和摄影哪个好,【干货】如何学习好摄影后期
  9. 7723java梦游游戏,渠道SDK登录
  10. mysql工具记录用户的查询语句_MySQL数据库的常用命令语句记录——安全用户语句及函数...
  11. paip.跟踪DISCUZ积分日志功能总结
  12. Springboot毕设项目眼镜店管理系统1m12ajava+VUE+Mybatis+Maven+Mysql+sprnig)
  13. Line in和mac in 的区别
  14. 简单阻抗匹配电路及公式
  15. Pandas:分组级的运算和转换--transform和apply
  16. Excel 2010 SQL应用048 比较两列数据是否相同
  17. 基于SSM的网上书城系统设计与实现
  18. Stata:gen命令中的group()函数的潜在风险
  19. Github Pages + Hugo 搭建个人博客
  20. mysql无法连接的sha2加密问题

热门文章

  1. 传说,倾尽天下,往事回首
  2. 一个不够智能的分数计算器
  3. 第一台计算机像什么比喻,太阳像什么的比喻句
  4. iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版
  5. 网络设备性能bps和pps
  6. 【Spark】实验6 Spark机器学习库MLlib编程实践
  7. quagga的rip实验
  8. 【iOS16】锁屏小组件总结
  9. 爱奇艺知识的音视频通用播放架构实践
  10. 不能显示隐藏文件的解决方法