mysql数据库故障处理_一次关于mysql故障的处理

今天早上正在看文档,手机就收到报警了,说是有一个服务器不能访问了,直接登录到服务器上(还好服务器还能登录),利用top看了下发现资源占用不是很多,但是在进程里面发现Tasks: 1560 total,这个服务器一般的进程只是在100~200之间,以前出现过mysql的一个表坏掉造成mysql挂死的情况,于是赶紧查看下mysql的日志,没发现错误,登录到mysql,利用show processlist命令查看,发现队列严重,有1000多个进程等待处理,于是执行:

/usr/local/apache/bin/apachectl stop

mysqladmin -uroot -p shutdown

/etc/rc.d/init.d/mysqld start

/usr/local/apache/bin/apachectl start

开始正常,继续用top命令查看,发现进程又开始逐渐上升到1000以上,很明显mysql出问题了,另外还发现%wa这项特别高,也就是说io等待很严重,再次重启mysql,利用show fullprocesslist查看mysql处理的进程,并打开另外一个窗口不停的用top查看%wa的大小,反复几次,终于发现有一个语句执行的时候导致%wa在60%以上,下面那个语句就是罪魁祸首:

select distinct tags from tags where status =0 order by click_count_mo desc limit 50,

单独执行这条语句1分多钟还没执行完,于是断定应该是distinct的效率太低造成的,tags表有200多万的数据,发现问题就好解决了,联系开发,当开发把distinct去掉后,问题解决!原来这个语句是昨天才放到刚建的虚拟主机上的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值