2026-10-25 10:36:07
MySQL复制心跳是通过MASTER_HEARTBEAT_PERIOD参数控制主库定期向从库发送空事件以维持连接的机制,确保无数据变更时连接不断开。 以下是具体配置方法与关键细节:
一、复制心跳的作用在建立主从复制时,通过CHANGE MASTER TO命令指定心跳周期(单位:秒,支持小数):
CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_PORT=3306, MASTER_HEARTBEAT_PERIOD=5; -- 每5秒发送一次心跳2. 修改已有复制关系若需调整已配置的心跳周期,需先停止复制,修改参数后重启:
STOP SLAVE;CHANGE MASTER TO MASTER_HEARTBEAT_PERIOD=10; -- 修改为每10秒一次START SLAVE;三、关键参数选择与slave_net_timeout的关系心跳周期必须小于slave_net_timeout(默认值通常为3600秒),推荐设置为slave_net_timeout的75%左右。例如:
若slave_net_timeout=30,则MASTER_HEARTBEAT_PERIOD可设为20秒或更小。
若周期过长(如接近slave_net_timeout),可能无法及时检测主库宕机,影响故障切换速度。
若周期过短(如1秒),会增加网络和主库负载,但能更快感知异常。
自动配置建议MySQL可能根据slave_net_timeout自动计算心跳周期,但生产环境建议显式配置,避免因默认值变化导致意外断开。
当前心跳设置通过以下命令查询复制连接的心跳周期:
SELECT MASTER_HEARTBEAT_PERIOD FROM performance_schema.replication_connection_configuration;检查slave_net_timeout确认网络超时阈值,确保心跳周期合理:
SHOW VARIABLES LIKE 'slave_net_timeout';场景1:主库负载较低,网络稳定设置MASTER_HEARTBEAT_PERIOD=10,slave_net_timeout=30,平衡负载与检测速度。
场景2:高可用要求严格设置MASTER_HEARTBEAT_PERIOD=2,slave_net_timeout=10,确保主库宕机后2秒内检测到。
通过合理配置复制心跳,可有效避免主从复制因空闲超时断开,同时优化系统资源使用。