Linux企业实战-Mysql(3)半同步复制转异步复制

异步复制(Asynchronous replication)
MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果down掉了,此时主上已经提交的事务可能并没有传到从上,如果此时,强行将从提升为主,可能导致新主上的数据不完整

全同步复制(Fully synchronous replication)
指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响

半同步复制(Semisynchronous replication)
介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。

在2010年MySQL5.5版本之前,一直采用的是这种异步复制的方式。主库的事务执行不会管备库的同步进度,如果备库落后,主库不幸crash,那么就会导致数据丢失。于是在MySQL在5.5中就顺其自然地引入了半同步复制,主库在应答客户端提交的事务前需要保证至少一个从库接收并写到relay log中

安装插件

Linux企业实战-Mysql(3)半同步复制转异步复制

查看是否成功

Linux企业实战-Mysql(3)半同步复制转异步复制

**插件

Linux企业实战-Mysql(3)半同步复制转异步复制

在server2中也做如下操作

Linux企业实战-Mysql(3)半同步复制转异步复制

但是**插件是**slave插件

Linux企业实战-Mysql(3)半同步复制转异步复制

server2中重启进程

Linux企业实战-Mysql(3)半同步复制转异步复制

主库上查看版同步是否开启以及开启的时间

Linux企业实战-Mysql(3)半同步复制转异步复制

server2中查看是否开启

Linux企业实战-Mysql(3)半同步复制转异步复制

关闭2中的slave io进程

Linux企业实战-Mysql(3)半同步复制转异步复制

在主库上写

Linux企业实战-Mysql(3)半同步复制转异步复制

查看user6和密码66666是否存在

Linux企业实战-Mysql(3)半同步复制转异步复制

然后去server2中查看

Linux企业实战-Mysql(3)半同步复制转异步复制

没有user6用户

然后打开slave进程

Linux企业实战-Mysql(3)半同步复制转异步复制

查看版同步复制的状态为ON

Linux企业实战-Mysql(3)半同步复制转异步复制

如果我门不打开server2从库中的salve io进程则server1收不到ACK就转换为异步复制

Linux企业实战-Mysql(3)半同步复制转异步复制