本次配置是在已搭建好主从复制的架构中进行配置
配置环境
操作系统 | master节点 | slave节点 |
centos7 | 8.0.37 | 8.0.37 |
配置半同步复制
配置master
安装master半同步复制插件
INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';
在MySQL的配置文件中添加配置
rpl_semi_sync_source_enabled = ON
rpl_semi_sync_source_timeout = 60000
rpl_semi_sync_source_trace_level = 32
rpl_semi_sync_source_wait_for_replica_count = 1
rpl_semi_sync_source_wait_no_replica = ON
rpl_semi_sync_source_wait_point = AFTER_COMMIT
重启MySQL服务
配置slave
安装slave半同步复制插件
INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.so';
在MySQL的配置文件中添加配置
rpl_semi_sync_replica_enabled = ON
rpl_semi_sync_replica_trace_level = 32
重启MySQL服务
测试验证
首先在slave上停止MySQL的复制关系
此时在master上执行一条inster语句
新打开个master窗口进行分析,可以看到master上的sql正在等待来自副本的半同步ACK,并且等master上面的sql执行完成后半同步复制会退化为异步复制
最后等master上面的sql执行完成,可以看到这条sql执行60s,与我们设置的超时时间相同
这时去slave上面启动复制关系
最后在新打开的master窗口上可以看到异步复制已经恢复为半同步复制
并且在MySQL的错误日志中也会记录这些信息