异步复制:主把事务写到binlog日志并无论从是否接收或者何时接收,commit以后,不会与从发生ack之类的交互。前端
同步复制:当主提交一个事务,在主向前端返回一个commit成功的指令前,必须保证全部的从已经提交了这个事务(全部从不但接收了,还必须apply了该事务日志)app
半同步复制:(5.7.2版本以前默认且惟一的一个参数值after_commit):主上客户端发出提交指令,事务提交到了存储引擎后,等待从传递过来ack,再向前端返回成功的状态。
与无损复制的区别就是:若是在主上这个事务已经提交到了存储引擎,而正在等待从的ack过程当中---这个时候发生creash,则主上这个事务其实已经认为commit了,而从还没commit,
在切换到从后,就会回滚最后的这个事务,这个时候主从的时候其实就不一致了)异步
无损复制:(5.7.2版本以后一个参数值after_sync):主上客户端发出提交指令,事务写入到了binlog,传递到了从(事务写入到了relay.log且flush to disk中持久化到了磁盘的relay.log中)
而后从给主反馈一个ack,master才会把事务提交到存储引擎且返回到client一个commit成功的指令。spa