mysql同步方式介绍

binlog日志就是执行的sql语句,包含插入修改删除,没有查询日志

relaylog日志是指备机接收binlog执行的日志

 

一:异步复制

master库有两个线程一个用户线程复制处理客户端的请求记录binlog日志,一个dump线程负责拷贝binlog日志跟把日志同步给slave,这样就会造成主从延时不一致问题

 

二:同步复制

同步复制是在记录binlog后将日志发送给备机,所有备机执行完然后发送确认ack给主机,主机才返回给客户端,如果备机执行时间过长就会导致客户端等待比较久,体验太差

 

三:半同步

为了解决同步复制的问题,出现了半同步,MySQL半同步复制不要求slave执行,而仅仅是接收到日志后,就通知master可以返回了。

半同步有两种方式AFTER_SYNC模式和AFER_COMMIT模式。两种方式的主要区别在与是否在存储引擎提交后等待slave的ACK.

AFTER_COMMIT模式

master提交时,会首先将该事务的redo log刷入磁盘,然后进入Inodb commit过程,这个步骤主要是释放锁,标记事务为提交状态(其他用户可以看到该事务的更新),这个过程完成后,等待slave发送ack消息,等到slave的响应后,master才成功返回给用户,master和slave的同步逻辑,是master-slave一致性的保证。

AFTER_SYNC模式

与AFTER_COMMIT相比,Master在AFTER_SYNC模式下,fsync binlog后,就开始等待slave同步,那么在进行第5步innodbcommit后,即其他事务能看到该事务的更新时,slave已经成功接收到binlog,即使发生切换,slave拥有与master同样的数据,不会发生“幻读”现象。但是对于上面描述的第一种情况,结果是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值