数据库主从异常问题
场景描述:在使用web功能时发现刚添加的数据在列表中没有展示,或者有时候展示有时候不展示(多个从库时出现)
如何查找问题:
这时我们已经怀疑可能从库延迟了,我们需要确认下是延迟问题还是同步中断
我们需要链接到从库执行命令:show slave status\G 来查看从库同步情况
同步中断问题
如果Slave_IO_Running (负责与主机的io通信),Slave_SQL_Running (负责自己的slave mysql进程),这两个参数如果有一个是no的,说明同步已经中断了
这时我们需要去看Last_Errno(错误码) Last_Error(错误信息),来确定什么原因导致的错误
接下来我们可以通过以下命令跳过错误,让同步正常执行
mysql>stop slave 停止同步
mysql>set global sql_slave_skip_counter=1; 设置跳过错误
mysql>start slave 开始同步
同步延迟问题
当我们发现Master_Log_File参数和Relay_Master_Log_File参数不一致或者Read_Master_Log_Pos和Relay_Log_Pos参数相差很大时,这表明从库延迟了
1.这时我们先确认是主库导致的还是从库自身导致的,我们可以通过查看服务器负载来定位问题,使用命令top和iotop来分别查看cpu和io的使用情况
2.定位到具体服务器后,在数据库中执行show full processlist来查看当前查询语句中执行时间较长的语句,定位后再做优化就可以了,有时可能慢sql已经执行完了,
我们使用命令看不到慢sql,那我们就需要到mysql慢日志中去查看最近产生的慢日志,对慢sql进行优化