至少有一个从机收到binlog 减少数据丢失的风险 不能完全避免数据丢失 MySQL5.5开始支持
二进制先写到远程
可保证远程数据完全不丢失
MySQL5.7开始支持
主上已经提交了,但是日志还没来得及传到备库,这时候宕机了,在半同步看来,其他会话看来是透明的,看到的是他提交了的,但是如果这时候切换到slave,slave上又没有提交,就矛盾了。
无损复制,已经写了二进制,但是没有提交挂掉了,但是主从数据一致,因为虽然没有提交,但是已经写了二进制,并且已经传到slave。
半同步复制的搭建:
可以在参数文件中,指定每次启动都加载plugin_load,也可以直接安装插件。
当半自动复制的延迟超过5秒就变成异步复制,备库的IO线程追到5秒内,就自动又变成半同步复制。
可以增加超时时间提高数据安全性,也就是强制半同步复制。
5.7无损复制
rpl_semi_sync_master_wait_point=AFTER_SYNC 开启无损复制
rpl_semi_sync_master_wait_for_slave_count=1