通过执行日志与连接信息排查
查看是否开启日志记录
mysql> show global variables like '%general%'; +------------------+---------------+ | variable_name | value | +------------------+---------------+ | general_log | off | | general_log_file | localhost.log | +------------------+---------------+ 2 rows in set (0.03 sec)
开启sql记录
mysql> set global general_log=on; query ok, 0 rows affected (0.00 sec)
查看日志位置观察异常sql
mysql> show global variables like '%general%'; +------------------+---------------+ | variable_name | value | +------------------+---------------+ | general_log | on | | general_log_file | localhost.log | +------------------+---------------+
查看当前连接数
mysql> show status like 'threads_connected'; +-------------------+-------+ | variable_name | value | +-------------------+-------+ | threads_connected | 2 | +-------------------+-------+ 1 row in set (0.04 sec)
查看哪些客户端连接到了mysql
mysql> show processlist; +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+ | id | user | host | db | command | time | state | info | progress | +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+ | 1 | system user | | null | daemon | null | innodb purge worker | null | 0.000 | | 2 | system user | | null | daemon | null | innodb purge coordinator | null | 0.000 | | 3 | system user | | null | daemon | null | innodb purge worker | null | 0.000 | | 4 | system user | | null | daemon | null | innodb purge worker | null | 0.000 | | 5 | system user | | null | daemon | null | innodb shutdown handler | null | 0.000 | | 98821 | root | 192.168.2.42:53790 | test_cloud | sleep | 2 | | null | 0.000 | | 98824 | root | 192.168.2.14:64112 | null | query | 0 | init | show processlist | 0.000 | +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+ 7 rows in set (0.05 sec)
通过慢sql信息排查
查看是否开启慢sql记录
mysql> show global variables like '%slow_query_log%'; +---------------------+--------------------+ | variable_name | value | +---------------------+--------------------+ | slow_query_log | off | | slow_query_log_file | localhost-slow.log | +---------------------+--------------------+ 2 rows in set (0.05 sec)
开启慢sql记录
mysql> set global slow_query_log=1; query ok, 0 rows affected (0.00 sec) mysql> show global variables like '%slow_query_log%'; +---------------------+--------------------+ | variable_name | value | +---------------------+--------------------+ | slow_query_log | on | | slow_query_log_file | localhost-slow.log | +---------------------+--------------------+ 2 rows in set (0.05 sec)
关闭慢sql记录
mysql> set global slow_query_log=0; query ok, 0 rows affected (0.00 sec) mysql> show global variables like '%slow_query_log%'; +---------------------+--------------------+ | variable_name | value | +---------------------+--------------------+ | slow_query_log | off | | slow_query_log_file | localhost-slow.log | +---------------------+--------------------+ 2 rows in set (0.05 sec)
修改slow_launch_time与 long_query_time
slow_launch_time:定义一个客户端连接启动所花费的时间阈值。如果一个客户端连接的启动时间超过了这个阈值,mysql 将认为这是一个慢连接启动,并将其记录到慢查询日志中。
long_query_time:定义一个 sql 查询执行所花费的时间阈值。如果一个 sql 查询的执行时间超过了这个阈值,mysql 将认为这是一个慢查询,并将其记录到慢查询日志中。
这两个参数都可以在 mysql 的配置文件中进行设置,通常在 my.cnf 或 my.ini 文件中定义。例如:
slow_launch_time = 2 long_query_time = 1
也可以通过sql进行查看和修改:
查看慢连接判定时间:
mysql> show variables like 'slow_launch_time%'; +------------------+-------+ | variable_name | value | +------------------+-------+ | slow_launch_time | 2 | +------------------+-------+ 1 row in set (0.04 sec)
修改慢连接判定时间:
mysql> set global slow_launch_time=3; query ok, 0 rows affected (0.00 sec) mysql> show variables like 'slow_launch_time%'; +------------------+-------+ | variable_name | value | +------------------+-------+ | slow_launch_time | 3 | +------------------+-------+ 1 row in set (0.04 sec)
查看慢sql判定时间
mysql> show variables like 'long_query_time%'; +-----------------+-----------+ | variable_name | value | +-----------------+-----------+ | long_query_time | 10.000000 | +-----------------+-----------+ 1 row in set (0.05 sec)
修改慢sql判定时间
mysql> set long_query_time=3; query ok, 0 rows affected (0.00 sec) mysql> show variables like 'long_query_time%'; +-----------------+----------+ | variable_name | value | +-----------------+----------+ | long_query_time | 3.000000 | +-----------------+----------+ 1 row in set (0.04 sec)
到此这篇关于mysql异常占用资源排查的文章就介绍到这了,更多相关mysql异常占用资源排查内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论