Error number: MY-011157; Symbol: ER_SEMISYNC_NO_SPACE_IN_THE_PKT; SQLSTATE: HY000
Message: No enough space in the packet for semi-sync extra header, semi-sync replication disabled.
MY-011157; ER_SEMISYNC_NO_SPACE_IN_THE_PKT; HY000 错误说明
MY-011157; ER_SEMISYNC_NO_SPACE_IN_THE_PKT; HY000 错误时MySQL Replication半同步模式中MySQL Server和MySQL Slave之间发生的协议通讯错误,MySQL Server会在发送消息帧给MySQL Slave时返回该错误,MySQL Master显示此错误:The semisync packet doesn’t have enough space for the retun msg.
常见案例
该错误通常会在MySQL Server发送消息给MySQL Slave的时候发生。MySQL Server和MySQL Slave通过半同步模式进行数据传输,其中MySQL Server会将其要发送的消息帧给MySQL Slave,而MySQL Slave收到消息帧后会自动返回响应消息帧,但是该响应消息帧中所带的MySQL Server状态码占用事先MySQL Server已经分配出去的消息帧空间,结果发生了空间不足而发生错误。
解决方法
解决该错误可以采取以下措施:
1.检查MySQL Server和MySQL Slave之间的通信情况,确保网络通畅无阻塞;
2.把MySQL Slave更新到最新版本,确保其稳定性;
3.在MySQL Server的my.cnf配置文件中,增加如下参数配置:
[mysqld]
server_id = x
log_bin = x
rpl_semi_sync_master_timeout=x
rpl_semi_sync_master_wait_no_slave=x
rpl_semi_sync_slave_timeout=x
rpl_semi_sync_master_enabled=1
其中server_id的参数值为MySQL Server实例的ID;log_bin的参数值为MySQL Server实例的bin_log日志;rpl_semi_sync_master_timeout为MySQL Master接受响应消息帧的超时时间;rpl_semi_sync_master_wait_no_slave为MySQL Master等待响应消息帧的超时时间;rpl_semi_sync_slave_timeout为MySQL Slave响应消息帧的超时时间;rpl_semi_sync_master_enabled为启用MySQL Server中半同步复制模式,设置值为1则启用;
4.重启MySQL Server,再次进行MySQL Server和MySQL Slave之间的通信检测,以确保解决该错误;