首先确认主从复制正常运行,再在主库和从库上安装半同步插件并配置my.cnf参数,接着重启从库I/O线程,最后通过状态变量验证半同步是否生效。

MySQL启用半同步复制需要在主库和从库上安装特定插件,并配置相关参数。整个过程并不复杂,但需确保主从复制已正常运行。
1. 确认主从复制已正常运行
半同步复制是建立在异步复制基础上的,因此先要确保主从之间的基本复制工作正常:
- 主库开启 binlog,设置唯一的 server-id
- 从库配置正确的主库连接信息(CHANGE MASTER TO)
- START SLAVE 后,SHOW SLAVE STATUS 显示 IO 和 SQL 线程为 Running
2. 安装半同步复制插件
在主库和从库上分别加载半同步插件:
主库操作:INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
从库操作:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
注意:某些系统中文件名可能是 semisync_master.dll 或 .so,根据操作系统调整。可通过以下命令验证是否安装成功:
SHOW PLUGINS; 查找 rpl_semi_sync_master / slave 是否为 ACTIVE
3. 配置 my.cnf 参数
修改主从数据库的配置文件 my.cnf,添加对应配置项。
主库配置:
[mysqld]
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 10000 # 超时时间,单位毫秒(默认10秒)
从库配置:
[mysqld]
rpl_semi_sync_slave_enabled = 1
配置完成后重启 MySQL 服务或动态生效(插件已加载的情况下)。
4. 重启从库I/O线程以启用半同步
从库启用插件后,需要重启I/O线程才能使半同步生效:
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
5. 验证半同步状态
在主库执行以下命令查看半同步是否启用成功:
SHOW STATUS LIKE 'Rpl_semi_sync_master_status';
如果返回 ON,说明主库已处于半同步模式。
在从库查看:
SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
应显示 ON,表示从库已准备好接收半同步事件。
其他有用的状态变量:
- Rpl_semi_sync_master_clients:当前支持半同步的从库数量
- Rpl_semi_sync_master_no_times:超时次数
- Rpl_semi_sync_master_no_tx:未收到ACK的事务数
基本上就这些。只要主从复制基础稳定,启用半同步复制的过程很直接。注意监控超时和状态变化,避免因网络问题导致自动退化为异步复制。










