加载lib,所有主从节点都要配置

  1. 主库:
  1. install plugin rpl_semi_sync_master soname 'semisync_master.so';

从库:

  1. install plugin rpl_semi_sync_slave soname 'semisync_slave.so';

建议每个节点都要装这两个插件,因为会有主从切换的情景。

查看,确保所有节点都成功加载

  1. show plugins;

启用半同步

  1. **先启用从库**上的参数,**再启用主库**的参数。<br /> 从库:
  1. set global rpl_semi_sync_slave_enabled = 1; # 1:启用,0:禁止
  1. 主库:
  1. set global rpl_semi_sync_master_enabled = 1; # 1:启用,0:禁止
  2. set global rpl_semi_sync_master_timeout = 10000; # 单位为ms

image.png

查看主库状态信息

  1. 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的回复的次数,即半同步模式成功提交数量。

主库:
image.png
从库:
image.png

查看主库参数信息

  1. show global variables like '%sync%';

image.png

  • 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就唤醒提交。