mysql5.5版本开始系统提供半同步复制机制,就是用来保障主从之间数据同步的及时性。在半同步机制下,master节点只要确认有至少一个slave节点接收到了事务,即向发起请求的客户端返回操做成功的信息。mysql
查看当前系统安装的全部插件:sql
mysql>show plugins;异步
查看mysql插件目录:插件
mysql>show variables like 'plugin_dir';线程
半同步插件共有两个,分别对应主从节点,semisync_master.so和semisync_slave.so,事务
在master节点执行命令,加载semisynchronous插件:同步
master> install plugin rpl_semi_sync_master soname 'semisync_master.so';ast
在slave节点也加载:配置
slave> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';plugin
经过show plugins检查插件是否处于可用状态,而后启用改功能:
在master节点设置:
master> set global rpl_semi_sync_master_enabled = 1;
master> set global rpl_semi_sync_master_timeout = 3000;
rpl_semi_sync_master_enabled:用来控制是否在master节点启用半同步复制,1即启用状态;
rpl_semi_sync_master_timeout:用来指定master节点等待slave响应的时间,单位是毫秒,默认为10000即10秒,这里设置为3秒。若是超过指定时间slave节点仍无响应,那么当前复制环境就临时被转换为异步复制。
在slave节点设置:
slave> set global rpl_semi_sync_slave_enabled = 1;
rpl_semi_sync_slave_enabled:用来控制slave节点是否启用半同步复制;
说明:上述修改是动态修改,建议将全部配置保存在初始化参数文件中。
配置好后,必需要从新启动slave节点的IO_THREAD线程:
slave> stop slave IO_THREAD;
slave> start slave IO_THREAD;
这一步是让slave节点从新链接master节点,注册成为半同步slave身份;