如果不允许重启,我提供一个shell脚本,生成 kill id命令杀掉lock线程,如下:
------------------------------------
#!/bin/bash
mysql -u root -e "show processlist"|grep -i "Locked" >>locked.txt
for line in awk '{print $1}' locked.txt
do
echo "kill $line">>kill_lock.sql
done
----------------------------------
执行完脚本后,会生成kill_lock.sql文件,内容类似如下:
kill 1
kill 2
kill 3
-------------------这些对应的都是lock的sessionid,直接复制文件里的内容,然后在mysql里执行就ok 了
至于排查哪条sql引起的,这个有点难了,不过你可以尝试开启慢查日志和无索引日志来确认比较耗时的查询,避免再次出现堵塞
解决方法:
1、使用service启动—命令为:service mysqld start,service mysql start,mysql 5 以后就用mysqld来启动。
2、使用mysqld脚本启动—命令为:/etc/init.d/mysqld start/etc/init.d/mysqld 为mysql安装路径。
3、使用service关闭—命令为:service mysqld stopservice mysql stop,mysql 5 以后就用mysqld来关闭。
4、使用mysqld脚本关闭—命令为:/etc/init.d/mysqld stop/etc/init.d/mysqld 为mysql安装路径。
5、使用service重启—命令为:。service mysqld restart。service mysql restart。mysql 5 以后就用mysqld来重启。
6、使用mysqld脚本重启—命令为:/etc/init.d/mysqld restart/etc/init.d/mysqld 为mysql安装路径。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)