Mysql慢查询导致db卡 diskIO高

来自linux中国网wiki
Evan讨论 | 贡献2022年8月22日 (一) 03:20的版本 →‎参考
跳到导航 跳到搜索

2017故障

磁盘I/O很高无非是下面几个原因引起:

磁盘子系统设备性能差,或采用ext2/ext3之类文件系统,或采用cfq之类的io scheduler,所以IOPS提上不去;
SQL效率不高,比如没有索引,或者一次性读取大量数据,所以需要更多的I/O;
可用内存太小,内存中能缓存/缓冲的数据不多,所以需要更多的I/O。

处理过程无非就是  iotop ,打开 slow query log 然后 show full processlist

mysql(root (none))>show variables like '%slow%';
+---------------------+----------------------------------------------------------+
| Variable_name       | Value                                                    |
+---------------------+----------------------------------------------------------+
| log_slow_queries    | OFF                                                      |
| slow_launch_time    | 2                                                        |
| slow_query_log      | OFF                                                      |
| slow_query_log_file | /mysql/data/VM_slow.log |
+---------------------+----------------------------------------------------------+
##由上面可见 没打开 ,自己临时打开一下 
 set global slow_query_log='ON';

##最长的那些一般就是了 这里为了安全我 省略了 sorry 
mysql(root (none))>show  full processlist;
+---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------
| Id      | User            | Host               | db       | Command | Time    | State                  | Info                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
+---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------
|       1 | event_scheduler | localhost          | NULL     | Daemon  | 5602073 | Waiting on empty queue | NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 2062319 | root            | 127.0.0.1:69    | games | Sleep   |      65 |                        | NULL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
+---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------

以前的

mysql慢查询导致db卡 diskIO高
今天海岛反映有几个服卡
前提知识

mysql> show variables like '%slow%';
+——————+——-+
| Variable_name | Value |
+——————+——-+
| log_slow_queries | ON |
| slow_launch_time | 2 |
+——————+——-+
2 rows in set (0.00 sec)

show variables like ‘%log%’;

#########
1、开启慢查询
找到 MySQL 的配置文件 ,my.cnf (Windows 为 my.ini ),在 MySQL 下增加下面几行:
添加在 [mysqld]后面
long_query_time = 0.01
#long_query_time = 1
slow_query_log=1
slow_query_log_file = /var/log/mysql/slow.log
# 这个在 mysql5.1测试过不行
#log-slow-queries= /usr/var/slowquery.log
上面的 2 是查询的时间,即当一条 SQL 执行时间超过2秒的时候才记录,/usr/var/slowquery.log 是日志记录的位置。
然后重新启动MySQL服务

或者临时打开 
set global slow_query_log='ON';

2、 MySQL 配置文件的位置
Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:Windows 下。
Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。
####################

处理
mysql -uroot -p -P3330 -h 10.142.30.67 -e 'show full processlist' >s11_processlist.txt
mysql -uroot -p -P3330 -h 10.142.30.67 -e 'show processlist' >s11min_processlist.txt
这样就可以得知哪些慢的东西 了

数据中心采集的问题,有可能会导致全服都卡的。
s11 s70 s97 s128 s135 db卡
后来 下午也卡 但没有lock 什么 的 就判定是网络喽

reference

mysql show processlist

Mysql慢查询slow query log

mysql占用CPU超过100%解决过程

导致MySQL数据库服务器磁盘I/O高

一次服务器IO占用率高的定位分析

MySql语句性能问题定位--从sql语句到磁盘IO检查

MySQL抓包工具:MySQL Sniffer【转

MySQL占用IO过高解决方案 http://www.111cn.net/database/mysql/116614.htm

MySQL慢查询日志与磁盘IO http://blog.csdn.net/qq_33290787/article/details/51916366

mysql 慢查询测试 http://blog.linuxchina.net/?p=1574

Mysql 慢查询和慢查询日志分析 http://www.cnblogs.com/wrmfw/archive/2011/09/05/2166929.html