半同步复制的原理:
在复制进行之前,确保至少有1个slave将变更数据写入磁盘中。通常一个客户端只会丢失一个事务。
必须是mysql5.5或之后的版本支持。
1.在master主机上安装插件
master>INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
2.在每个slave上安装slave插件
slave>INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;
3.关闭master,修改 my.cnf
[mysqld]
rpl-semi-sync-master-enabled=1
重新启动master;
4.关闭slave,修改my.cnf
[mysqld]
rpl-semi-sync-slave-enabled=1
重新启动slave;
5.其他选项
rpl-semi-sync-master-tmeout=毫秒数
这是为了防止半同步复制收不到确认而被阻塞,这个选项是超时设置;
rpl-semi-sync-master-wait-no-slave={ON/OFF}
开启行为:master等待slave连接,在超时限制内,确认事务已经正确写入磁盘;
关闭行为:如果没有连接的slave,则master还原为异步复制。