MySQL主从复制,默认是异步复制。异步复制,即master执行完事物并提交后,二进制日志记录完这些更新操作后,就又开始下一批事物。并不关心这些更新是否被复制到从上。

 而半同步复制则相反,它需要等待至少一台mysql的从服务器接收到master的二进制日志后,才开始执行下一批事物。在这个等待过程中,如果主备网络故障或者备库挂了,主库在事务提交后等待10秒(rpl_semi_sync_master_timeout的默认值)后,就会继续。这时,主库就会变回原来的异步状态。

 当MySQL在加载并开启Semi-sync插件后,每一个事务需等待备库接收日志后才返回给客户端。如果做的是小事务,两台主机的延迟又较小,则Semi-sync可以实现在性能损失很小的情况下,实现零数据丢失。