MySQL5.7 半同步复制
一、概述 5.5与5.7的半同步复制可能存在差异,从MySQL5.5开始,MySQL以插件的形式支持半同步复制 异步 :默认情况下,MySQL复制是异步的。主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理。此时若是主若是崩溃了,那提交完成的事务可能并没有传到从上,从而导致数据不一致。 全同步 :当主库执行完接受到的事务,会等待所有从机执行此事务的返回值,当收到所有从机的返回值时才会返回给客户端。所以对性能的影响严重。 半同步 :介于以上两者之间,主库在执行完客户端的事务后,会等待至少一个从机接收到并写入relay log中才会返回给客户端。它提高了数据的安全性, 也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。 relay log中继日志 :在salve中IO线程会拉去master的二进制到relay log中,然后SQL线程会读取relay-log日志的内容并应用到从服务器。 两个插件实现半同步功能。主端有一个插件,从端有一个插件。 半同步复制必须在主和从都有启用,否则使用异步复制。 只有事件写入中继日志并且刷新到磁盘后,从设备才会确认收到事务的事件。 如果无任何从服务器确认事务的情况下发生超时,主服务器将恢复异步复制。当至少一个半同步丛机赶上,主机将返回到半同步复制。 After