加载lib,所有主从节点都要配置
主库:
install plugin rpl_semi_sync_master soname 'semisync_master.so';
从库:
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
查看,确保所有节点都成功加载
show plugins;
启用半同步
**先启用从库**上的参数,**再启用主库**的参数。<br /> 从库:
set global rpl_semi_sync_slave_enabled = 1; # 1:启用,0:禁止
主库:
set global rpl_semi_sync_master_enabled = 1; # 1:启用,0:禁止
set global rpl_semi_sync_master_timeout = 10000; # 单位为ms
查看主库状态信息
show global status like "%sync%";
参数:
- Rpl_semi_sync_master_clients 支持和注册半同步复制的已连Slave数
- Rpl_semi_sync_master_no_times master关闭半同步复制的次数
- Rpl_semi_sync_master_no_tx master 没有收到slave的回复而提交的次数,可以理解为master等待 超时的次数,即半同步模式不成功提交数量
- Rpl_semi_sync_master_status ON是活动状态(半同步),OFF是非活动状态(异步),用于表示主服务器使用的是异步复制模式,还是半同步复制模式
- Rpl_semi_sync_master_tx_avg_wait_time master 花在每个事务上的平均等待时间
- Rpl_semi_sync_master_tx_waits master等待成功的次数,即master没有等待超时的次数,也就是 成功提交的次数
- Rpl_semi_sync_master_yes_tx master成功接收到slave的回复的次数,即半同步模式成功提交数量。
查看主库参数信息
show global variables like '%sync%';
- rpl_semi_sync_master_enabled (主库)是否启动半同步
- rpl_semi_sync_master_timeout 等待多少毫秒后变成异步复制,默认是10000ms
- rpl_semi_sync_master_wait_point 5.7默认AFTER_SYNC(增强版半同步复制,无损复制模式),在得到slave的应答后再commit,可选值AFTER_COMMIT,在master提交后同步数据给slave,然后master等待 slave应答,应答成功返回客户端。
- rpl_semi_sync_master_wait_for_slave_count :只要有N(默认为1)个从节点返回了ACK就唤醒提交。