mysql常用运维命令
mysql常用运维命令
查看当前所有连接
-- 查看当前所有连接
SHOW FULL PROCESSLIST;
说明:
- 关注State状态列,是否有锁。如果大量状态是
waiting for handler commit
检查磁盘是否占满 - 关注Time耗时列,是否有慢查询
- 关注Command列,如果存在大量Sleep且对应Time列持续很长,说明存在大量空闲连接会占用cpu。建议在客户端应用层修改连接池配置,或在服务端数据库调整
wait_timeout
和interactive_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
SELECTa. USER,a. HOST,a.db,b.thread_os_id,b.thread_id,a.id processlist_id,a.command,a.time,a.state,a.info
FROMinformation_schema.PROCESSLIST a,performance_schema.threads b
WHEREa.id = b.processlist_id
AND b.thread_os_id = <线程id>;