分布式专题|Mysql主从复制的三种方式你应该要了解的!

继续我们前面我们搭建了Mysql主从复制架构,我们今天来介绍主从复制的三种方式,这在面试过程中也是会被经常问到的:

同步复制

同步复制指得是当主库提交事务后,binlog已经通过dump线程传到从库的中继日志,主库需要一直等待从库的提交确认,从库重放完成之后,回复一个ACK给主库,主库这才结束等待,执行后续操作,注意:如果这个时候有多个从节点,那么主库等待的时间就越久,所以需要设置一个超时等待时间。

在这里插入图片描述

异步复制

异步复制模式为了解决主库等待时间过长的问题,将返回确认取消了,也就是说当主库提交完事务后,不需要等待从库提交确认,就直接执行后续操作,返回客户端; 但是这个就会造成这样一个问题:当主机提交完事务后挂了,但是这个时候binlog还没有同步到从库,如果强制切换主从的话,就会造成新的主库数据不完整

在这里插入图片描述

半同步复制

半同步方式介于同步和异步复制方式做了一个折中: 同样主库还是需要等待从库的确认后才执行后续操作,但是不同的是这次不是等待从库提交完事务后,才发一个确认通知给主库,而是当从库将binlog写到relaylog后,就会给主库发送确认通知,这个不仅缩短了等待时间而且还维护了数据的安全性

在这里插入图片描述

增强半同步复制

在半同步复制情况下如果有这样一个情况:当主库提交完事务之后,就开始等待从库的relay写入返回,如果从库这个时候发生了意外(有可能被人偷走了),导致主库等待超时,这个时候主库就会直接结束等待了,因为事务已经提交了,用户肯定是可以看到没有被同步的数据,为了解决这个问题,mysql5.7引入了增强半同步复制: 只有当收到至少一个从库返回的relay log写入确认后,才提交事务,也就是说提交事务在收到确认之后

在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要...
    Java旺阅读 3,775评论 0 0
  • 1、复制概述 MySQL的复制原理大致如下: (1)首先,MySQL主库在事务提交时会把数据变更作为事件Event...
    代码的搬运工阅读 890评论 0 0
  • 引言:前面我们有文章介绍如何实现MySQL的主从复制,今天来介绍下如何保证MySQL主从数据的一致性。MySQL主...
    寂寞的棍棍阅读 14,535评论 2 14
  • MySQL Replication (MySQL 主从复制) 是什么?为什么要主从复制以及它的实现原理是什么? M...
    CgySHFF阅读 3,401评论 0 2
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,185评论 16 22