MySQL复制类型介绍:
(1)同步复制:MASTER提交事务,直到事务在所有的Slave都已提交,此时,才会返回给客户端,事务执行完毕。
缺点:完成一个事务可能会有很大的延迟。
slave1
MAster slave2
slave3
简单说就是三台从必须都确认事务提交后,才会返回给客户端,延迟大。
异步复制:
MySQL本身支持单向的,异步的复制。异步复制指的是把数据从一台机器拷贝到另一台机器时有一个延时,最重要的是
意味着当应用系统的事务提交已经确认时数据并不能在同一时间实时同步到从服务器上,这个延时是由网络带宽、
资源可用性和系统负载决定的,不能保证一些事件都能够被所有的Slave所接收。
slave1
MAster slave2
slave3
简单来说:主发生事务提交后,会通过binlog发送给从,主发送后不需要从确认。
(2)半同步复制:
半同步复制工作的机制处于同步和异步之间,Master事务提交阻塞,只要一个Slave收到该事务的事件且已记录,
它就不会等待所有的Slave都告知已收到,且它只是接收,并不需要其它的完全执行且提交。
slave1
MAster slave2
slave3
简单说就是主mater和从slave必须都确认事务提交后,才会返回给客户端,它不用管其他的从服务器。
且可以设置超时时间,默认为10S,为收到从的提交请求转换为异步模式。
默认情况下我们的主从复制是采用异步方式进行同步的,导致我们的从服务器数据有可能会落后于主服务器,在一定程度上是不安全的;
如果我们主服务器宕机,从服务器将来不及复制数据,从而就产生了半同步机制。
开启半同步功能后,主服务器只等待多个服务器中的指定的一台从服务器复制成功,然后才进行其它的写操作,使这台从
服务器和主服务器上的数据完全同步,而并不管其它的从服务器,当然主服务器不会一直等待从服务器复制成功的;
因为万一一台从服务器挂掉,那么主服务器将一直处于等待状态而不能提供写服务,;
这就需要设置一个超时时间;防止等待从服务器时间太长,如果超过指定时间,从服务器依然未响应,则把指定的从服务器自动转换为异步状态。
本文出自 “山猫” 博客,谢绝转载!
原文:http://cqtangbo.blog.51cto.com/2978612/1752454