MySQL一条命令生成数据库巡检报告,省时省力!

MySQL一条命令生成数据库巡检报告,省时省力!

一条命令就能搞定MySQL巡检报告?虽然有些夸大其词了,不过从MySQL 5.7 开始,官方就提供了一个存储过程 sys.diagnostics ,确实只需一条命令,就可以帮助我们收集数据库的信息。以便于数据库出现问题时,有助于问题的分析。

diagnostics() 存储过程是利用 MySQL 自身的 information_schema,performance_schema、sys 等元数据信息及性能数据信息的库表函数等,对当前服务器状态进行诊断,提供给 DBA 一份可以用于分析数据库状态的报告。

使用介绍

sys.diagnostics 该存储过程有三个重要参数,in_max_runtime、in_interval、in_auto_config。

  • in_max_runtime: 总共最大收集时间,单位秒,null 为默认值60秒;
  • in_interval:快照间的间隔时间,单位秒,null为默认30秒;
  • in_auto_config: Performance Schema的选项分析current\medium\full, 使用的选项指标越全,对MySQL服务的性能影响越大,FULL的影响最大。

使用方式1

将输出内容保存到文本文件,如收集2分钟的一个报告,每次间隔30秒

mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;

可以打开diag.out文件,查看内容
巡检

使用方式2

用mysql命令导出为HTML格式如:

mysql -h127.0.0.1 -P3306 -uroot -p -H -e "CALL sys.diagnostics(1, 1, 'current')" > /tmp/report_$(date +"%Y-%m-%d_%H-%M").html

巡检2

报告的主要信息

报告的信息还是不少的,常见的基本信息都有,如:

  • MySQL服务器基本信息
  • 参数配置
  • 会话信息
  • innodb 信息
  • Overall状态信息

还有其他很多信息,就不再一一列出了,有兴趣的,可以直接生成一个自己看看。

posted @ 2026-05-26 14:14  数据库小白(专注)  阅读(18)  评论(0)    收藏  举报