MySQL线上命令最全详解(12个DBA最常用命令)

MySQL是大型架构核心,下面我详解MySQL线上命令@mikechen

一、查看MySQL版本

SELECT VERSION();

mysql -V

应用场景

升级前检查版本;

排查兼容性问题;

确认是否支持某些新特性。

二、查看当前连接数

SHOW STATUS LIKE 'Threads_connected';

查看最大连接数

SHOW VARIABLES LIKE 'max_connections';

应用场景
排查:

Too many connections

问题。

三、查看所有连接

SHOW PROCESSLIST;

查看完整SQL:

SHOW FULL PROCESSLIST;

输出示例

Id  User  Host       DB      Command Time State
12  root  localhost  test    Query   20   Sending data

应用场景
排查:

  • 慢SQL;
  • 锁等待;
  • 长事务;
  • 死锁;

四、杀死异常连接

KILL 12345;

示例

KILL 1024;

应用场景
当某条SQL执行过久:

Waiting for lock
Locked
Copying to tmp table

可直接终止。

五、查看数据库运行状态
命令

SHOW GLOBAL STATUS;

查看指定指标:

SHOW GLOBAL STATUS LIKE 'Questions';
SHOW GLOBAL STATUS LIKE 'Uptime';

常用指标

指标 说明
Questions 总查询数
Connections 总连接数
Uptime 运行时间
Slow_queries 慢SQL数量

六、查看MySQL配置参数

SHOW VARIABLES;

查看指定配置:

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';

应用场景
检查:

  • 缓冲池大小;
  • 连接数限制;
  • 字符集配置;

七、查看锁等待情况
MySQL 8

SELECT * FROM performance_schema.data_locks;
SELECT * FROM performance_schema.data_lock_waits;

MySQL 5.7

SHOW ENGINE INNODB STATUS\G

应用场景
排查:

Lock wait timeout exceeded

问题。

八、查看慢查询
应用场景:定位性能瓶颈SQL。

SHOW VARIABLES LIKE 'slow_query_log';

查看阈值

SHOW VARIABLES LIKE 'long_query_time';

查看日志位置

SHOW VARIABLES LIKE 'slow_query_log_file';

九、查看表大小

SELECT
table_name,
ROUND(data_length/1024/1024,2) AS data_mb,
ROUND(index_length/1024/1024,2) AS index_mb
FROM information_schema.tables
WHERE table_schema='your_db';

应用场景
排查:

  • 磁盘占用;
  • 大表问题;
  • 分库分表需求;

十、查看索引情

SHOW INDEX FROM user;

应用场景
检查:

  • 索引是否存在;
  • 索引是否生效;
  • 重复索引;

十一、分析SQL执行计

应用场景:性能优化必备。

EXPLAIN
SELECT *
FROM user
WHERE id=1;

MySQL 8:

EXPLAIN ANALYZE
SELECT *
FROM user
WHERE id=1;

核心关注

type
rows
possible_keys
key
Extra

十二、查看主从复制状态
主库

SHOW MASTER STATUS;

从库

SHOW REPLICA STATUS\G

MySQL 5.7:

SHOW SLAVE STATUS\G

核心指标

Replica_IO_Running
Replica_SQL_Running
Seconds_Behind_Source

正常情况:

Yes
Yes
0

评论交流
    说说你的看法