背景

在企业中,一般系统架构的瓶颈会出现在数据库这一部分,mysql主从架构在很大程度上解决了这部分瓶颈,但是在mysql主从同步的架构也存在很多问题;比如:1.关于数据写入部分(也就是主库)往往很难做到扩展,虽然很多大公司在逻辑业务方面就进行对数据的拆分,比如商品库存按照区域去拆分(一个区域走一个库存也就是一个主库,然后定时同步总的库存),按照商品类型去划分(一个类型的商品走一套数据库),但是这对于很多中小型公司来说实现起来还是比较困难的; 2.主从同步一般都是一个主库,一旦主库出现问题,就有可能直接导致整个主从同步架构崩盘,虽然发现后也是可以慢慢恢复的,但是这个恢复时间对于很多公司来说是难以接受的,今天的这篇博文就是主要给解决主库单点故障这个问题提供一个思路:

不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。

主从同步复制原理                       

                          

该过程分为三步:

第一步就是master记录二进制日志(这些记录叫做二进制日志事件,binary log events)。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

第二步就是slave将master的binary log拷贝到它自己的中继日志(relay log)。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

第三步SQL slave thread处理该过程的最后一步,slave重复中继日志中的事件,将改变执行到自己的数据库。SQL线程从中继日志读取事件,更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。

MySQL双主(主主)架构思路如下

1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;

2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从

3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务);

4.所有提供服务的从服务器与masterB进行主从同步(双主多从);

5.建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式);

这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力;但是也有几个不足的地方:

1、比如masterB可能会一直处于空闲状态(其实完全可以让它承担一部分从库的角色来负责一部分查询请求的)

2、这样真正提供服务的从库要等masterB先同步完了数据后才能去masterB上去同步数据,这样可能会造成一定程度的同步延迟时间的加长;

3、如果masterA一旦恢复正常,会不会导致数据写入混乱(这个可以在keepalived中设置响应的规则,让其不”夺权”;

架构简易图如下:   

                          

MySql双主架构原理相关推荐

  1. MySQL双主架构介绍

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

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

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

  3. mysql双主架构优缺点

    双主架构图 双主架构实现原理 当从库IO线程接受到主库传递来的二进制日志(Binlog)并将之保存为从库的中继日志(relay log),然后从库SQL线程将中继日志(relay log)的事件重做到 ...

  4. mysql双主架构沈剑_58沈剑:数据库秒级平滑扩容架构方案

    一.缘起 (1)并发量大,流量大的互联网架构,一般来说,数据库上层都有一个服务层,服务层记录了"业务库名"与"数据库实例"的映射关系,通过数据库连接池向数据库路 ...

  5. keepalived mysql双主架构图_基于keepalived Mysql双主热备配置

    基于keepalived双主热备: 一.环境: OS:CentOS 6.5 X64 DB Version:Percona Mysql 5.7.15-9-log 路径:/app/mysql57 数据文件 ...

  6. mysql双主架构沈剑_58 沈剑 - 数据库架构师做什么-58同城数据库架构设计思路

    1.数据库架构师做什么? 58同城数据库架构设计思路 技术中心-沈剑 shenjian@58.com 2.关亍我-@58沈剑 • 前百度高级工程师 • 58同城技术委员会主席,高级架构师 • 58同城 ...

  7. Keepalived+Haproxy+Mysql(双主)高可用架构部署

    Keepalived+Haproxy+Mysql(双主)高可用架构部署 一.背景 公司原部署的Mysql架构为keepalived+Mysql双主,但是这个架构有个缺陷是所有的读写请求都在一台机器上( ...

  8. MySQL双主(主主)架构方案

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

  9. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变...

    [Mysql主从复制] 解决的问题 数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了. 负载均 ...

最新文章

  1. 2021年大数据基础(四):​​​​​​​​​​​​​​​​​​​​​大数据业务分析基本步骤
  2. HPC System Design
  3. 802.11 MAC层帧解析
  4. mysql用in查询list_Mysql优化器对in list的处理
  5. 只用一套解决方案,就可解决80%的交通物流行业信息难题
  6. 上海师范大学计算机作业网址,新SQL——SERVER实验练习答案.doc
  7. 独立站可以一个人做吗?
  8. Dubbo 生态添新兵,Dubbo Admin 发布 v0.1
  9. 一个在线工具箱:栅栏密码加密解密工具
  10. Python安装过程中出现“找不到指定的路径”的解决办法
  11. (法)H.嘉当(H.Cartan)、塞尔(J.P.Serre)、施瓦茨(L.Schwartz)等[著],刘应明、胡师度[译]:代数结构与拓扑结构
  12. ajax同步导致浏览器假死
  13. 效率UP!机器学习从废品中分拣可回收材料;计算机科学自学计划▪中译版;Python入门指南;好用的代码自动补全工具;前沿论文 | ShowMeAI资讯日报
  14. 数据分析从零到精通第二课 Hive和Spark入门
  15. 当名人的 qq 被盗以后
  16. ~3 ccf 2022-03-2 出行计划
  17. 月入十万的QQ空间营销引流技巧,你知道吗,??不看你会后悔!!
  18. 海马体照相馆携手神策数据:99.7% 的摄影满意度,离不开专业与数据驱动
  19. c语言程序设计项目教学教程,C语言程序设计:项目教学教程
  20. 第七章 C控制语句:分支和跳转

热门文章

  1. 迁移学习——Scatter Component Analysis
  2. 中国海油统一身份管理认证平台建设项目入选《ISC 2022十年网安行业代表性案例》之能源行业优秀案例
  3. 戴上装饰者模式的眼镜,看透Java I/O
  4. CocosCreator小游戏排行榜
  5. 5-10 列车调度 (25分)
  6. 分享一个漂亮的NetBeans配色方案
  7. 数学家的这些迷惑行为,最后都成了神操作
  8. 成都盛铭轩:店铺数据分析方法
  9. VR制作中必须踩的坑365之029(oculus2、UE4、UE5、VR记录一年的踩坑之旅)触感反馈/为VR控制器制作震动
  10. LabVIEW CompactRIO 开发指南10 确保可靠性与看门狗定时器