什么是半同步复制
所谓的半同步复制就是master主服务器每commit一个事务(简单来说就是做一个改变数据的操作),要确保slave从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志 relay log 里,然后会给 master主服务器信号,告诉对方已经接收完毕,这样master才能把事务成功commit,这样就保证了master-slave的数据绝对的一致(但是以牺牲master的性能为代价).但等待时间也是可以调整的。
在 master主服务器上:
查看是否开启 on表示开启
在备服务器上
查看是否开启 on表示开启
on的话开启
在从服务器开启线程
在slave服务中重启IO线程
mysql> stop slave IO_THREAD;
mysql> start slave IO_THREAD;
测试
当slave从库的IO_Thread 线程将binlog日志接受完毕后,要给master一个确认,如果超过10s未收到slave的接收确认信号,那么就会自动转换为传统的异步复制模式。
创建数据库
查看状态每执行成功一条命令这个就加一
master需要等到slave确认后才能提交,如果等不到确认消息,master等待10s种后自动变成异步同步;slave启起来后,master上改变的数据还是会自动复制过来,数据又回到一致。
卸载半同步复制插件
查看已经安装的插件
mysql> select plugin_name,load_option from information_schema.plugins;
mysql> uninstall plugin 插件名称;