首先确认MySQL版本及主从复制环境,安装并启用半同步插件;主库设置rpl_semi_sync_master_enabled=1,从库启用后重启I/O线程;通过SHOW STATUS验证Rpl_semi_sync_master_status和Slave_status为ON;最后将配置写入my.cnf实现持久化。

MySQL半同步复制(Semi-Synchronous Replication)是一种介于异步复制和全同步复制之间的机制,它保证主库在提交事务前至少有一个从库已接收到并写入中继日志,从而提高数据安全性。下面介绍如何配置MySQL半同步复制。
1. 确认环境要求
要使用半同步复制,需满足以下条件:
- MySQL版本 >= 5.5(推荐使用5.7或8.0)
- 主从复制已经配置为异步模式并正常运行
- 主从节点之间网络稳定
- 安装了semisync插件支持(通常默认编译包含)
2. 安装半同步插件
在主库和从库上分别启用半同步复制插件。
主库操作:
加载主库半同步插件并开启功能:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; SET GLOBAL rpl_semi_sync_master_enabled = 1; SET GLOBAL rpl_semi_sync_master_timeout = 10000; -- 超时时间(毫秒),默认10秒
从库操作:
加载从库插件:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_slave_enabled = 1;
注意:从库启用后需要重启I/O线程才能生效:
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
3. 验证半同步状态
检查主从是否成功建立半同步连接。
查看主库状态:
SHOW STATUS LIKE 'Rpl_semi_sync_master_status'; SHOW STATUS LIKE 'Rpl_semi_sync_master_clients';
Rpl_semi_sync_master_status 为 ON 表示半同步已启用;Rpl_semi_sync_master_clients 显示当前连接的半同步从库数量。
查看从库状态:
SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
若返回 ON,则表示从库已以半同步方式运行。
4. 配置文件持久化设置
上述 SET GLOBAL 设置在重启后会失效,建议写入 my.cnf 配置文件中。
主库 my.cnf 添加:
[mysqld] rpl_semi_sync_master_enabled = 1 rpl_semi_sync_master_timeout = 10000
从库 my.cnf 添加:
[mysqld] rpl_semi_sync_slave_enabled = 1
修改后重启 MySQL 服务使配置永久生效。
基本上就这些。只要主从复制已通,插件安装正确,再按步骤开启参数,就能顺利启用半同步复制。注意监控超时情况,避免因网络问题导致主库退化为异步模式。










