MySQL占用大量CPU资源到100%

生产上的MySQL5.6的库,一直都很正常的运行,从昨天下午开始,服务器CPU资源100%,开始我还以为是其它应用占用了CPU资源,一段时间后应该会放开,直到今天早上,CPU还仍然是100%,这就让我很疑惑了。

赶紧上去查看一下:

#top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

15232 mysql 20 0 2779m 2.3g 0 S 197.1 29.1 80573:31 mysqld

果然,CPU被MySQL占完了,业务部门也反应系统查询很慢。

我就呵呵了,这平时跑着都正常,怎么突然就100%了。

mysql>show processlist;

然后就发现某台服务器正在用一个我没见过的账号在查询,状态一直是Sending data,而且有好几条。

去mysql-slow.log里翻一下,嗯,是有这么一条select语句。

二话不说,问开发有没有用那个MySQL的账号,回答说有,直接把SQL语句丢过去,然后在MySQL里kill掉那些一直Sending data的查询:

mysql>kill xxxxx;

进程号在你show processlist的时候就有,直接干掉,然后再出来top一下,嗯,CPU已经恢复正常了。

mysql 5.6 GTID主从增加从库

实际情况为:

一台mysql 5.6.38,运行了很久,binlog只保留7天。之前的从库出了故障导致无法同步,现在重新增加一台从库。

有了GTID,在同步的时候就不需要去binlog里找pos点了,但是在网上搜了一大圈,开始同步之后都都出现了Slave_SQL_Running: No,error-log提示主键问题,折腾了一晚上,最后还是用最简单的方法解决了,根本都不需要用网上的那些什么set global gtid_purged = ‘565132ec-c5c0-11e7-a1b1-0660aba819f4:1-38495535’;之类。

因为本身在GTID下,导出的数据库就已经帮你处理好了。

不多说,大致说下操作方法和步骤:

阅读更多