点击上方蓝字关注我们 文末有惊喜
基于我们前面我们搭建了Mysql主从复制架构,我们今天来介绍主从复制的三种方式,这在面试过程中也是会被经常问到的:
同步复制
同步复制指的是当主库提交事务后,binlog已经通过dump线程传到从库的中继日志,主库需要一直等待从库的提交确认,从库重放完成之后,回复一个ACK给主库,主库这才结束等待,执行后续操作,注意:如果这个时候有多个从节点,那么主库等待的时间就越久,所以需要设置一个超时等待时间。
在这里插入图片描述
异步复制
异步复制模式为了解决主库等待时间过长的问题,将返回确认取消了,也就是说当主库提交完事务后,不需要等待从库提交确认,就直接执行后续操作,返回客户端;但是这个就会造成这样一个问题:当主机提交完事务后挂了,但是这个时候binlog还没有同步到从库,如果强制切换主从的话,就会造成新的主库数据不完整
在这里插入图片描述
半同步复制
半同步方式介于同步和异步复制方式做了一个折中:同样主库还是需要等待从库的确认后才执行后续操作,但是不同的是这次不是等待从库提交完事务后,才发一个确认通知给主库,而是当从库将binlog写到relaylog后,就会给主库发送确认通知,这个不仅缩短了等待时间而且还维护了数据的安全性
在这里插入图片描述
增强半同步复制
在半同步复制情况下如果有这样一个情况:当主库提交完事务之后,就开始等待从库的relay写入返回,如果从库这个时候发生了意外(有可能被人偷走了),导致主库等待超时,这个时候主库就会直接结束等待了,因为事务已经提交了,用户肯定是可以看到没有被同步的数据,为了解决这个问题,mysql5.7引入了增强半同步复制: 只有当收到至少一个从库返回的relay log写入确认后,才提交事务,也就是说提交事务在收到确认之后