mysql常用运维命令

mysql常用运维命令

查看当前所有连接

-- 查看当前所有连接
SHOW FULL PROCESSLIST;

说明:

  • 关注State状态列,是否有锁。如果大量状态是waiting for handler commit检查磁盘是否占满
  • 关注Time耗时列,是否有慢查询
  • 关注Command列,如果存在大量Sleep且对应Time列持续很长,说明存在大量空闲连接会占用cpu。建议在客户端应用层修改连接池配置,或在服务端数据库调整wait_timeoutinteractive_timeout参数关闭。

查看最大连接数

-- 查看数据库设置的最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 临时修改最大连接数
-- set global max_connections=200;

-- 查看历史连接记录
-- 关注Max_used_connections项,历史最大连接数,可根据该值调整配置
-- 关注Max_used_connections_time项,历史最大连接数的时间
show status like '%connection%';

查看查询缓存配置

mysql 8.0以后已经废弃。开启可能会导致cpu占用升高

show variables like'%query_cache%';
-- 关闭缓存
-- set session uery_cache_type=off;

查看慢查询

开启慢查询统计可能会导致cpu占用升高

show variables like '%slow_query_log%'

数据库cpu高占用排查

# 找出mysql 的进程号
ps -ef | grep mysql

# 根据进程号,找出占用CPU靠前的线程号
top -H -p <mysqld进程id>
-- 查看高cpu占用线程对应sql
SELECT
    a. USER,
    a. HOST,
    a.db,
    b.thread_os_id,
    b.thread_id,
    a.id processlist_id,
    a.command,
    a.time,
    a.state,
    a.info
FROM
    information_schema.PROCESSLIST a,
    performance_schema.threads b
WHERE
    a.id = b.processlist_id
AND b.thread_os_id = <线程id>;

你可能感兴趣的:(数据库,mysql,数据库,运维)