利用Mysql5.7的新特性实现多机房高可用架构【转】
再牛逼的架构也敌不过挖掘机,无论单机房内你的架构多么的高可用,多么的完善,当挖掘机挖下去那一瞬间,都是扯蛋,楼主所在的公司也被挖掘机挖断过光纤、电力线。
为什么大家都在谈论服务冗余,缓存击穿等高可用时,很少人谈到数据库的高可用呢?这是因为数据库是有状态的。服务可以部署到多个机房,并且同时提供服务,但是数据库却只能有一个机房做主服务,如果多机房,每个机房都有自己的主服务,那么多主同时写造成的数据冲突,同步问题所耗费的人力,物力将会得不偿失,而单主带来的问题是: 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的新特性实现多机房高可用架构【转】的更多相关文章
- MySQL5.6 GTID新特性实践
MySQL5.6 GTID新特性实践 GTID简介 搭建 实验一:如果slave所需要事务对应的GTID在master上已经被purge了 实验二:忽略purged的部分,强行同步 本文将简单介绍基于 ...
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- MySQL高可用架构之MySQL5.7组复制MGR
MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...
- MySQL5.7的新特性
MySQL 5.7版本据说已经在了很大的性能提升以及做得更加安全了,想了解更多MySQL 5.7的新特性可以参考我转载叶金荣老师的MySQL 5.7的新特性说明.这里我简单演示一下MySQL 5.7的 ...
- (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现
架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用 优势: ...
- linux下mysql5.7的MHA高可用架构搭建
一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...
- mysql高可用架构MHA搭建(centos7+mysql5.7.28)
无论是传统行业,还是互联网行业,数据可用性都是至关重要的,虽然现在已经步入大数据时代,nosql比较流行,但是作为数据持久化及事务性的关系型数据库依然是项目首选,比如mysql. 现在几乎所有的公司项 ...
- mysql5.7高可用架构之MHA
一.MHA简介 MHA(Master High Availability)目前在mysql高可用方面比较成熟.是一套优秀的作为 mysql高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障 ...
- 初试mysql5.7.2新特性:多源复制(MySQL 5.7 multi-source replication)
多源复制和多主复制的区别: 多主复制示意图: 多源复制示意图: 在my.cnf中添加crash safe特性参数:master_info_repository=TABLE;relay_log_info ...
随机推荐
- BZOJ5006 THUWC2017随机二分图(概率期望+状压dp)
下称0类为单边,1类为互生边,2类为互斥边.对于一种匹配方案,考虑其出现的概率*2n后对答案的贡献,初始为1,如果有互斥边显然变为0,否则每有一对互生边其贡献*2.于是有一个显然的dp,即设f[S1] ...
- hdu3712 Detector Placement
题意:给一束激光,一个三棱柱,三棱柱会折射光,问这束激光最终是否会和y = 0相交: 分析:模拟题,为了方便处理折射角,事先求出每条边的向内和向外的法向量: findpoint : 找第一交点 ste ...
- 转:关于python文件操作大全
转自:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html python中对文件.文件夹(文件操作函数)的操作需要涉及到o ...
- Android6.0 org.apache.http.util.EncodingUtils等相关类被移除(转)
ref: Android6.0 org.apache.http.util.EncodingUtils等相关类被移除 - 博客频道 - CSDN.NEThttp://blog.csdn.net/u012 ...
- Qt ------ 截图、获取鼠标指定的RGB值
获取RGB值思路:截图,获取图片的(0,0)的RGB值 int x = QCursor::pos().x(); int y = QCursor::pos().y(); // QPixmap pixma ...
- Java 从业一年的心得体会
在你打开此文时,你或许在犹豫这个职业,但是我觉得干就好了,没有适合不适合,趁年轻折腾吧! 以下是我一年来从事Java的经验积累,知识有很多,经验就九条 1.设计的数据库表尽量添加一个状态位,可以在删除 ...
- Python【关联接口的开发】
import flask,time,json,hashlib,redis print("==============被调函数部分================")def my_m ...
- VLOOKUP函数将一个excel表格的数据匹配到另一个表中
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- Tomcat权威指南-读书摘要系列4
4. Tomcat的性能调校 测量Web服务器的性能 测试负载的工具 Apache Benchmark Siege JMeter
- HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识
求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...