深入解析:MySQL半同步复制的配置指南与实践技巧

本次配置是在已搭建好主从复制的架构中进行配置

配置环境

操作系统 master节点 slave节点
centos7 8.0.37 8.0.37

配置半同步复制

配置master

安装master半同步复制插件

1
INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';

在MySQL的配置文件中添加配置

1
2
3
4
5
6
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半同步复制插件

1
INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.so';

在MySQL的配置文件中添加配置

1
2
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的错误日志中也会记录这些信息