半同步复制,有两种方式,第一种叫做AFTER_COMMIT方式,他不是默认的,主库写入日志到binlog,等待binlog复制到从库了,主库就提交自己的本地事务,接着等待从库返回给自己一个成功的响应,然后主库返回提交事务成功的响应给客户端。
另外一种是现在MySQL 5.7默认的方式,主库把日志写入binlog,并且复制给从库,然后开始等待从库的响应,从库返回说成功给主库了,主库再提交事务,接着返回提交事务成功的响应给客户端。
本机介绍:
master在win10, slave在linux。
搭建半同步复制也很简单,在之前搭建好异步复制的基础之上,安装一下半同步复制插件就可以了,先在主库中安装半同步复制插件,同时还得开启半同步复制功能:
1. Master 操作
#1.登陆
mysql -uroot -p
#2.下载插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';
#3.检查是否安装插件
show plugins;
#4.打开设置
set global rpl_semi_sync_master_enabled=on;
2. Slave操作
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
show plugins;
set global rpl_semi_sync_slave_enabled=on;
#重启从库的IO线程
stop slave io_thread;
start slave io_thread;
3.检查
#master上运行, 如果Rpl_semi_sync_master_status状态为ON, 那么就可以了。
show global status like '%semi%';