MySQL5.5的半同步复制是在传统异步复制基础上优化的功能,能够保证主库提交事务后,至少有一个从库接收到事务日志并写入中继日志后,主库才会向客户端返回成功响应,大幅提升主从数据一致性。以下为完整的配置安装流程。

环境准备
首先需要准备两台及以上安装MySQL5.5的服务器,一台作为主库(Master),其余作为从库(Slave),确保主从库之间网络互通,且主从库的server-id参数值不同,避免复制冲突。同时主库需要开启二进制日志功能,从库开启中继日志功能。
安装半同步复制插件
MySQL5.5的半同步复制功能通过插件实现,需要分别在主库和从库上安装对应的插件。
主库安装插件
登录主库MySQL终端,执行以下命令安装主库半同步插件:
-- 安装主库半同步复制插件 INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; -- 查看插件是否安装成功 SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
从库安装插件
登录从库MySQL终端,执行以下命令安装从库半同步插件:
-- 安装从库半同步复制插件 INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; -- 查看插件是否安装成功 SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
配置半同步复制参数
插件安装完成后,需要分别配置主库和从库的相关参数,开启半同步复制功能。
主库参数配置
在主库MySQL终端执行以下命令,设置半同步复制相关参数:
-- 开启主库半同步复制功能 SET GLOBAL rpl_semi_sync_master_enabled = 1; -- 设置主库等待从库响应的超时时间,单位为毫秒,这里设置为1000即1秒 SET GLOBAL rpl_semi_sync_master_timeout = 1000; -- 查看主库半同步参数状态 SHOW VARIABLES LIKE 'rpl_semi_sync_master%';
如果需要永久生效,可以将参数写入主库配置文件my.cnf中:
[mysqld] rpl_semi_sync_master_enabled=1 rpl_semi_sync_master_timeout=1000
从库参数配置
在从库MySQL终端执行以下命令,开启从库半同步复制功能:
-- 开启从库半同步复制功能 SET GLOBAL rpl_semi_sync_slave_enabled = 1; -- 查看从库半同步参数状态 SHOW VARIABLES LIKE 'rpl_semi_sync_slave%';
同样可以写入从库配置文件my.cnf实现永久生效:
[mysqld] rpl_semi_sync_slave_enabled=1
重启从库IO线程
从库参数配置完成后,需要重启IO线程让半同步配置生效:
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;
验证半同步复制功能
完成上述配置后,可以通过以下方式验证半同步复制是否正常工作。
查看主库半同步状态
在主库执行以下命令,查看半同步复制的运行状态:
SHOW STATUS LIKE 'Rpl_semi_sync_master_status';
如果返回值为ON,说明主库半同步复制已正常开启。
测试数据同步
在主库创建测试数据库和表,插入测试数据:
CREATE DATABASE test_semi_sync; USE test_semi_sync; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(20)); INSERT INTO test_table VALUES (1, 'test_data');
登录从库查看是否存在对应的数据库、表和数据,如果存在则说明半同步复制配置成功,数据已经正常同步。
注意事项
- 半同步复制的超时时间需要根据业务实际网络情况调整,避免超时导致主库退化为异步复制。
- 如果主库等待从库响应超时,会自动切换为异步复制模式,直到从库重新恢复连接后才会再次尝试半同步模式。
- 半同步复制会增加主库事务提交的延迟,需要结合业务场景评估是否适用,不适合对写入延迟要求极高的场景。
通过以上步骤即可完成MySQL5.5半同步复制的配置安装,有效提升主从数据库的数据一致性,降低数据丢失风险。