再牛逼的架构也敌不过挖掘机,无论单机房内你的架构多么的高可用,多么的完善,当挖掘机挖下去那一瞬间,都是扯蛋,楼主所在的公司也被挖掘机挖断过光纤、电力线。

为什么大家都在谈论服务冗余,缓存击穿等高可用时,很少人谈到数据库的高可用呢?这是因为数据库是有状态的。服务可以部署到多个机房,并且同时提供服务,但是数据库却只能有一个机房做主服务,如果多机房,每个机房都有自己的主服务,那么多主同时写造成的数据冲突,同步问题所耗费的人力,物力将会得不偿失,而单主带来的问题是: mysql5.6/mysql5.5的同步模板是after-commit,也就是主服务器会保证主上binlog已经落盘,并且异步发送给slave,这个时候用户已经在主服务器上能看到提交的事务,假如此时出现网络问题,另外一个机房的slave变成主时,用户会发现刚才做的操作都回滚了,也就是事务不见了。

为了解决这个问题,mysql5.7引入了after-sync模式,这个模式下,master必须等待salve已经把binlog落盘,才会把事务提交到存储层,并且返回给客户端成功。

这个时候我们可以在同城搭建三个机房A、B、C,其中A、B机房做为冗余部署,服务,数据库都各部署一套,而C机房只部署数据库,做为数据库的日志机房。我们开启Mysql的半同步模式after-sync, 这个时候他可以保证在返回给客户端事务提交成功时,日志肯定已经同步给B、C中的任意机房,当某一天A的断电的时候,这个时候,我们只需要DBA对比B、C的日志文件,如果发现B比C多,那么直接把B做为主,C做为备,将所有流量切到B机房即可;如果发现C机房日志比B机房多,这种情况发生在,断电的瞬间,A和B之间的网络先断开,部分事务成功发送到C,这个时候,由DBA手动将C多出的日志同步到B,再开启B做为主服务,所有流量切到B机房,这个操作可以在半小时内完成。虽然此架构不能保证A断电的情况,B能立即提供服务,但是这个方案能保证不丢失数据,并且能在极短的时间内恢复。

架构图如下:

转自

https://www.toutiao.com/i6497872566609248781/

利用Mysql5.7的新特性实现多机房高可用架构【转】的更多相关文章

  1. MySQL5.6 GTID新特性实践

    MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...

  2. 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  3. MySQL高可用架构之MySQL5.7组复制MGR

    MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...

  4. MySQL5.7的新特性

    MySQL 5.7版本据说已经在了很大的性能提升以及做得更加安全了,想了解更多MySQL 5.7的新特性可以参考我转载叶金荣老师的MySQL 5.7的新特性说明.这里我简单演示一下MySQL 5.7的 ...

  5. (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现

           架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用        优势:       ...

  6. linux下mysql5.7的MHA高可用架构搭建

    一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...

  7. mysql高可用架构MHA搭建(centos7+mysql5.7.28)

    无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql. 现在几乎所有的公司项 ...

  8. mysql5.7高可用架构之MHA

    一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...

  9. 初试mysql5.7.2新特性:多源复制(MySQL 5.7 multi-source replication)

    多源复制和多主复制的区别: 多主复制示意图: 多源复制示意图: 在my.cnf中添加crash safe特性参数:master_info_repository=TABLE;relay_log_info ...

随机推荐

  1. Python之路3【第零篇】目录

    Web应用框架篇 1.Web应用框架前戏

  2. BZOJ3240 NOI2013矩阵游戏(数论)

    必修五题. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include<cmath> ...

  3. P4071 [SDOI2016]排列计数

    题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰好有 m 个数是稳定的 满足条 ...

  4. 利用VRID/VMAC实现更安全的netscaler HA故障切换

    利用VRID/VMAC实现更安全的netscaler HA故障切换 virtual MAC在故障切换(failover)中的作用.    在一个HA模式中,首要节点(primary node)拥有所有 ...

  5. 【刷题】HDU 1853 Cyclic Tour

    Problem Description There are N cities in our country, and M one-way roads connecting them. Now Litt ...

  6. 【刷题】BZOJ 2157 旅游

    Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...

  7. 浅谈Tarjan算法及思想

    在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.非强连通图有向图的极大强连通子图,称为强连 ...

  8. 【uoj131】 NOI2015—品酒大会

    http://uoj.ac/problem/131 (题目链接) 题意 给出一个字符串,每个后缀有一个权值${a_i}$,这些后缀两两之间存在公共前缀.问能够组成长度从0~n-1的公共前缀的后缀的方案 ...

  9. JAVA代码保护从入门到放弃

    java语言开发的产品,需要部署到客户现场服务器.产生了对代码进行保护的需求,开始研究代码加密方式. 经过研究分析后有两种思路,混淆和加密.两者各自适应不同的情况. 由于大量spring注解功能,并且 ...

  10. 布隆过滤器 Bloom Filter

    使用普通集合来判断一个元素是否已存在于集合中,需要占用比较大的空间.而使用Bloom Filter 可有效节省空间. Bloom Filter 以较少的内存占用及较小的误判率达到判断元素是否存已经加入 ...