码迷,mamicode.com
首页 > 数据库 > 详细

MySQL主从复制半同步复制原理及搭建

时间:2019-01-03 13:58:43      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:返回   引入   接收   参数   延迟   之间   操作   timeout   5.5   

在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有及时得到主库推送的Binlog日志时,主库突然宕机了,那么此时从库就可能损失这个事务,从而造成主从不一致的状况。

因此我们MySQL5.5版本之后引入了半同步复制的概念

半同步复制的原理:

半同步复制时,为了保证主库上的每一个Binlog事务都能够被可靠的复制到从库上,主库在每次事务成功提交时,并不及时反馈给前端应用用户,而是等待其中的一个从库也接收到Binlog事务并成功写入中继日志后,出库才返回commit操作成功给客户端。半同步复制保证了事务成功提交后,至少有两份日志记录,一份在主库的Binlog日志上,另一份在至少一个从库的中继日志Relay log上,从而更近一步保证了数据的完整性。

技术分享图片

这个示意图是半同步复制的步骤:

在这个半同步复制模式下:第1、2、3中任何一个步骤中主库宕机,则事务并没有提交成功。从库也没有得到日志,此时的主从复制数据是一致的。

那什么时候半同步复制会突然变成异步复制呢?

  在第4步的时候,如果网络延迟故障或从库宕机,那么此时主库的Binlog都没有及时传送给从库上,此时主库上的事务会等待一段时间,时间长短由参数rpl_semi_master_timeout设置的毫秒数来决定,如果Binlog在这段时间内都无法成功推送到从库上,则MySQL自动调整复制模式为异步模式,此时事务正常返回提交结果给客户端。

 

MySQL主从复制半同步复制原理及搭建

标签:返回   引入   接收   参数   延迟   之间   操作   timeout   5.5   

原文地址:https://www.cnblogs.com/FengGeBlog/p/10213583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!