Mysql进程管理

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  7 | root | localhost | yy   | Sleep   |  154 |       | NULL             | 
|  8 | root | localhost | NULL | Query   |    0 | NULL  | show processlist | 
+----+------+-----------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)

mysql> kill 7
    -> ;

mysql> show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
|  8 | root | localhost | NULL | Query   |    0 | NULL  | show processlist | 
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

 

-----

每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。

KILL允许自选的CONNECTION或QUERY修改符:

·         KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。

·         KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。

如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有SUPER权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。

您也可以使用mysqladmin processlistmysqladmin kill命令来检查和终止线程。

注释:您不能同时使用KILL和Embedded MySQL Server库,因为内植的服务器只运行主机应用程序的线程。它不能创建任何自身的连接线程。

当您进行一个KILL时,对线程设置一个特有的终止标记。在多数情况下,线程终止可能要花一些时间,这是因为终止标记只会在在特定的间隔被检查:

·         在SELECT, ORDER BY和GROUP BY循环中,在读取一组行后检查标记。如果设置了终止标记,则该语句被放弃。

·         在ALTER TABLE过程中,在每组行从原来的表中被读取前,检查终止标记。如果设置了终止标记,则语句被放弃,临时表被删除。

·         在UPDATE或DELETE运行期间,在每个组读取之后以及每个已更行或已删除的行之后,检查终止标记。如果终止标记被设置,则该语句被放弃。注意,如果您正在使用事务,则变更不会被 回滚。

·         GET_LOCK()会放弃和返回NULL。

·         INSERT DELAYED线程会快速地刷新(插入)它在存储器中的所有的行,然后终止。

·         如果线程在表锁定管理程序中(状态:锁定),则表锁定被快速地放弃。

·         如果在写入调用中,线程正在等待空闲的磁盘空间,则写入被放弃,并伴随"disk full"错误消息。

·         警告:对MyISAM表终止一个REPAIR TABLE或OPTIMIZE TABLE操作会导致出现一个被损坏的没有用的表。对这样的表的任何读取或写入都会失败,直到您再次优化或修复它(不中断)。

转自 http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-index

 

mysql 有选择地kill process


show processlist / show full processlist 可以看到当前的process信息,
如果想要kill某些process,只能复制它的Id(thread id),然后kill, 每次只能kill一个。
如果要kill掉所有运行时间超过10秒的语句,这样搞起来就太麻烦了。
今天介绍个简单的办法,主要是通过INFORMATION_SCHEMA数据库来实现。
其中的PROCESSLIST表记录了process的信息。


找出运行时间超过10秒的process的ID。
SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST 
WHERE COMMAND = 'Query' AND TIME > 10;
这样似乎太莽撞了,有些进程不应该被kill的,比如负责replication的。。。
需要过滤一下:


SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST 
WHERE COMMAND = 'Query' AND TIME > 10 
AND ID != CONNECTION_ID() 
AND USER != 'root' 
AND COMMAND != 'Binlog Dump' 
AND STATE NOT REGEXP '(slave|relay|event)'
你也可以根据实际情况加入自己的过滤条件。


然后比较悲剧的是 kill 只能接受一个id做为参数。
只好生成所有的kill语句了:


mysql> SELECT CONCAT('KILL ',ID,';')
FROM   INFORMATION_SCHEMA.PROCESSLIST
WHERE  USER = 'webs'
       AND COMMAND = 'Query'
       AND TIME > 10
  INTO   OUTFILE '/tmp/kill_list.txt';
然后再导入:


注意下面这行语句不是以分号结尾的
mysql> \. /tmp/kill_list.txt
Query OK, 0 ROWS affected (0.00 sec)
虽然现在智能多了,但是这样搞一回也还是比较麻烦的。
可以试试看 Percona Toolkit里面的 pt-kill, 祝你们好运



本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/p/3492819.html,如需转载请自行联系原作者。



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
关系型数据库 MySQL
MySQL查看连接数和进程信息
这篇文章介绍了如何在MySQL中查看连接数和进程信息,包括当前打开的连接数量、历史成功建立连接的次数、连接错误次数、连接超时设置,以及如何查看和终止正在执行的连接进程。
97 10
|
2月前
|
缓存 关系型数据库 MySQL
MySQL——大量的deleted进程导致磁盘100%
MySQL——大量的deleted进程导致磁盘100%
24 0
|
11月前
|
关系型数据库 MySQL
mysql中有大量sleep进程的原因与解决办法
mysql中有大量sleep进程的原因与解决办法
588 0
|
存储 数据采集 缓存
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
【运维知识进阶篇】Zabbix5.0稳定版详解9(Zabbix优化:高并发对MySQL进行拆分、Zabbix-agent主动上报模式、使用proxy代理模式、系统自带监控项优化、进程优化、缓存优化)
677 0
|
11月前
|
SQL 关系型数据库 MySQL
mysql中kill掉所有锁表的进程
mysql中kill掉所有锁表的进程
138 0
|
12月前
|
Java 关系型数据库 MySQL
JSP教师辅助办公软件教学进程管理系统yeclipse开发mysql数据库bs框架java编程jdbc
JSP 教师辅助办公软件教学进程管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
60 0
|
关系型数据库 MySQL C语言
MAMP mysql服务器无法启动没有mysql进程正在运行
MAMP mysql服务器无法启动没有mysql进程正在运行
247 0
|
SQL 关系型数据库 MySQL
MySQL 数据库sql命令查询被锁的表实例演示,mysql的锁表与解锁,mysql强制解锁杀掉进程,mysql查询锁表一直转圈
MySQL 数据库sql命令查询被锁的表实例演示,mysql的锁表与解锁,mysql强制解锁杀掉进程,mysql查询锁表一直转圈
1582 0
MySQL 数据库sql命令查询被锁的表实例演示,mysql的锁表与解锁,mysql强制解锁杀掉进程,mysql查询锁表一直转圈
|
SQL 监控 关系型数据库
『叶问』#40,MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程如何对应
『叶问』#40,MySQL进程号、连接ID、查询ID、InnoDB线程与系统线程如何对应
567 0
|
关系型数据库 MySQL Linux
linux下配置mysql 以及 linux下开启守护进程
linux下mysql的安装配置 更新数据源
316 0

热门文章

最新文章