Error number: MY-011156; Symbol: ER_SEMISYNC_RPL_SWITCHED_ON; SQLSTATE: HY000
Message: Semi-sync replication switched ON at (%s, %lu).
错误说明:
MY-011156:ER_SEMISYNC_RPL_SWITCHED_ON 是MySQL的一种报错信息,当记录复制时候使用半同步复制模式出现的报错。ER_SEMISYNC_RPL_SWITCHED_ON 报错表示复制流会一直处在半同步复制模式中,系统会监测有没有另外一个 slave 连接,如果有,则还是采用半同步复制,如果没有,则切换到 async 复制。 SQLSTATE:HY000 代表SQL语句出现错误,主要是某条不合法的语句引起的,可能是由于sql语法error或者与数据库服务器有关的错误。
MySQL的半同步复制一般用于主从复制的场景,一般来讲在每个主要的slave通道启用半同步复制,此时当一个slave通道断开连接之后,MySQL将从半同步复制自动切换到异步复制以提高性能。在这种情况下,在返回此报错信息 ER_SEMISYNC_RPL_SWITCHED_ON。
解决方法:
1. 首先检查复制网络的状态,确保复制通道的稳定性,可使用故障排除工具,来检查出现是否是由于网络通道的故障引起的。
2. 可以在复制环境中设置slave_net_timeout选项,开启IO线程的超时重连功能,避免在掉线情况下返回此错误报错。
3. 若确定错误是由于slave连接数过大引起的,可以尝试减少slave同时连接数量以减少此类错误,不过此种解决方法需要仔细判断设定slave连接数。
4. 若确定是由于半同步复制原因引起,可以在my.cnf文件中添加相关配置信息,设置更低的半同步复制率,来满足数据库全备要求,同时尽可能保持slave复制IO稳定性。
5. 启动Graceful_slave_restart事务,可防止在恢复slave同步之后出现半同步复制模式的报错。