首页 » MySQL » 正文

MySQL主从复制,IO线程contenting状态排查记录

背景:

主机:Mysql 5.4

从机:Mysql5.6

网络环境:跨公网同步

问题:

从机同步状态截图:

err日志内容:

 

分析:

1、主从同步状态主要关注两个指标:

Slave_IO_Running
Slave_SQL_Running

如果均为YES,说明主从同步状态正常,其他情况需结合Slave_SQL_Running_State进行分析

现状Slave_IO_Running为Connecting状态,Slave_SQL_Running为YES,说明非从机SQL执行问题,问题原因为主机与从机通信问题。

按照常规排查手段,Slave_IO_Running为Connecting状态,需要排查以下几项

  • 主机与从机网络通信是否畅通
  • 从机同步操作使用的用户名、密码是否正确(有可能主机后期做过修改)

排查方法:

在从机shell终端,使用mysql命令进行远程连接主机,确认是否可以远程访问

在本环境中,网络与用户名、密码排查后,排除该原因。

 

2、结合err日志,提示某binlog文件找不到或权限不足(ERR code:13),通过日志提示可以知晓该binlog文件是主机binlog文件,而非从机的binlog文件。

排查主机binlog文件是否存在:登录主机查看该文件

在本环境中,该binlog文件不存在,由于生产环境业务持续运行,binlog不断产生,主机有binlog日志归档机制,所以早期binlog文件已不存在。

解决方法:将归档日志还原至/var/log/mysql目录,待从机读取完后,手动进行删除

完成以上操作后,在本环境中,主从同步状态仍然没有恢复,且err日志仍然提示文件未找到

 

3、确认日志文件存在以及文件权限正常,网络正常的情况下,记录同步节点,停止复制stop slave,重新建立主从关系,偏移量从上次记录的偏移量开始。

结果:未恢复正常,主从状态与故障截图一致,err日志仍然提示日志文件未找到。

 

4、通过以上分析,主从状态异常的问题可能已经不是mysql配置本身的问题,并且排除网络及文件权限的原因后,可能问题更出在系统策略上。

  • 排查主机防火墙
  • 排查主机Selinux安全策略

结果:防火墙为关闭状态,Selinux为enforcing状态。

Selinux访问控制策略可能有影响,尝试关闭selinux,故障消失。

发表评论