[转帖]技术分享| MySQL 的 AWR Report?— MySQL 状态诊断报告
https://segmentfault.com/a/1190000039959767
作者:秦福朗
爱可生 DBA 团队成员,负责项目日常问题处理及公司平台问题排查。热爱 IT,喜欢在互联网里畅游,擅长摄影、厨艺,不会厨艺的 DBA 不是好司机,didi~
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
引言
用过 Oracle 数据库的同学都知道,在 Oracle 有个功能:AWR(全称为 Automatic Workload Repository),自动负载信息库。它收集关于特定数据库的操作统计信息和其他统计信息,Oracle 以固定的时间间隔(默认为 1 个小时)为其所有重要的统计信息和负载信息执行一次快照,并将快照存放入 AWR 中,为 DBA 们分析数据库提供了非常好的便利条件。虽然 MySQL 没有这么强的功能,但 MySQL 有一个类似的,名叫 diagnostics 的存储过程,提供了相类似的功能。
diagnostics() 存储过程是利用 MySQL 自身的 information_schema,performance_schema、sys 等元数据信息及性能数据信息的库表函数等,对当前服务器状态进行诊断,提供给 DBA 一份可以用于分析数据库状态的报告。
基本包含信息
diagnostics() 收集的数据主要包含以下信息:
- 来自 metrics 视图的信息;
- 来自其他相关的 sys schema 视图的信息,比如检测第 95 百分位数的查询视图;
- 如果是 NDB Cluster 的 MySQL 服务器,则还会有 ndbinfo schema 的信息;
- 主从复制状态信息
一些 sys schema 的视图被计算为初始(可选)、overall 和 delta:
- 初始视图是 diagnostics() 过程开始时的视图内容。这个输出与用于 delta 视图的起始值相同。如果 diagnostics.include_raw 配置选项为 ON,则初始视图会被包含在报告中。
- overall 视图是 diagnostics() 过程结束时的视图内容。这个输出与用于 delta 视图的结束值相同。overall 视图总是被包含在报告内。
- delta 视图是 procedure 执行开始到结束的差异。最小值和最大值分别是结束视图的最小值和最大值。它们不一定反映监控期间的最小值和最大值。除了 metrics 视图外,Delta 仅计算第一个和最后一个输出之间的差值。
注意:
这个存储过程通过操作 sql_log_bin 系统变量的会话值,在执行过程中禁用二进制日志。这是一个受限制的操作,所以这个存储过程需要有足够的权限来设置受限制的会话变量。
命令示例
方式 1:
创建一个诊断报告,使用 current Performance Schema 设置,每 30 秒启动一次迭代,最多运行 120 秒:
mysql> CALL sys.diagnostics(120, 30, 'current');
要在 diagnostics() 过程运行时将其输出内容捕获到文件中,可使用 MySQL 客户端 tee 文件名和 notee 命令:
mysql> tee diag.out;
mysql> CALL sys.diagnostics(120, 30, 'current');
mysql> notee;
此方式生成表格样式如下:
方式 2:
shell> mysql -uroot -p -S /opt/mysql/data/6666/mysqld.sock -H -e "CALL sys.diagnostics(120, 30, 'current');" >report.html
此方式生成网页样式如下:
参数
CALL sys.diagnostics( in_max_runtime, in_interval, 'current');
- in_max_runtime (INT UNSIGNED):最大数据采集时间,单位为秒。默认值为 60 秒,自定义需使用大于 0 的值。
- in_interval (INT UNSIGNED):数据采集之间的休眠时间,单位为秒。默认值为 30 秒,自定义需使用大于 0 的值。
in_auto_config ENUM('current', 'medium', 'full'): 要使用的 Performance Schema 配置。允许的值有:
- current:使用当前的 instrumen 和 consumers 设置。
- medium:启用部分 instrumen 和 consumers。
- full:启用所有 instrumen 和 consumers。
注意:
有关 Performance Schema 模式下的 instrumen 和 consumer 的概念与基本使用原理可自行查阅资料,本文不再赘述。
启用的 instrumen 和 consumer 越多,对 MySQL 服务器性能影响越大。要小心使用 medium 设置,尤其是 full 设置,对性能影响较大。没特殊要求使用 current 即可。
使用 medium 或 full 设置需要 super 权限,如果选择了 current 以外的设置,则会在程序结束时恢复当前设置。
配置选项
diagnostics() 操作可以使用下面的配置选项或者其对应的用户定义变量:
以下参数需新增或修改 sys.sys_config,具体用法可了解 MySQL 官方文档 sys_config 一节。
- debug, @sys.debug
如果该选项为 ON,则产生调试输出。默认值为 OFF。
UPDATE `sys`.`sys_config` SET `value` = 'ON' WHERE `variable` = 'debug';
- diagnostics.allow_i_s_tables, @sys.diagnostics.allow_i_s_tables
如果这个选项为 ON,那么 diagnostics() 过程就被允许在 INFORMATION_SCHEMA.TABLES 表上执行表扫描。如果有很多表,这可能会有较高的代价。默认值是 OFF。
UPDATE `sys`.`sys_config` SET `value` = 'ON' WHERE `variable` = 'diagnostics.allow_i_s_tables';
- diagnostics.include_raw, @sys.diagnostics.include_raw
如果这个选项为 ON,则 diagnostics() 过程的输出包括查询 metrics 视图的原始输出。默认值是 OFF。
UPDATE `sys`.`sys_config` SET `value` = 'ON' WHERE `variable` = 'diagnostics.include_raw';
- statement_truncate_len, @sys.statement_truncate_len
format_statement() 函数返回的语句的最大长度。较长的语句会被截断到这个长度。默认值是 64。
UPDATE `sys`.`sys_config` SET `value` = '32' WHERE `variable` = 'statement_truncate_len';
报告信息
(1)MySQL 服务器基本信息
(2)基本配置信息
- 参数配置
- Performance Schema 下的 instrumen 与 consumer 配置情况
(3)sys schema初始状态
(4)每次迭代的信息
和命令给定的迭代周期与次数有关
(5)Schema 信息
(6)Overall 状态信息
(7)Delta 状态信息
因篇幅长度,以上只是列出部分信息,具体信息可以自行实践了解,文档末尾附上一份报告链接,可下载审阅。
结语
diagnostics() 包含的信息很多,可实现“一键”数据库性能信息状态诊断并输出报告,帮助 DBA 在实际工作中便捷地分析数据库状态。
附链接:
sys_config:https://dev.mysql.com/doc/ref...
诊断报告示例:
链接:https://pan.baidu.com/s/1XEV2... 提取码:3306
[转帖]技术分享| MySQL 的 AWR Report?— MySQL 状态诊断报告的更多相关文章
- 【华为云技术分享】数据库开发:MySQL Seconds_Behind_Master简要分析
[摘要]对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数.通过在slave上执行"show slave status;& ...
- 尖峰7月线上技术分享--Hadoop、MySQL
7月2号晚20:30-22:30 东大博士Dasight分享主题<大数据与Hadoop漫谈> 7月5号晚20:30-22:30 原支付宝MySQL首席DBA分享主题<MySQL ...
- 技术分享|闪回在MySQL中的实现和改进
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 3306π 福州站,以下内容是由万里数据库,研发工程师唐洁分享的MySQL闪回方案完整PPT. Enjoy GreatSQ ...
- 技术分享 | Prometheus+Grafana监控MySQL浅析
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简介 Prometheus 一套开源的监控&报警&时间序列数据库的组合,通常 Kubernetes 中都会 ...
- 技术分享 | MySQL Group Replication集群对IP地址的限制导致的一些问题与解决办法
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 1. 遇到问题 测试人员小玲准备在docker环境中部署MGR集群进行一些测试,她有三个容器,容器IP分别是: 172.3 ...
- 技术分享 | MySQL数据误删除的总结
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 内容提要 用delete语句 使用drop.truncate删除表以及drop删 ...
- 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...
- 技术分享 | 简单测试MySQL 8.0.26 vs GreatSQL 8.0.25的MGR稳定性表现
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. M ...
- 技术分享 | 在MySQL对于批量更新操作的一种优化方式
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 作者:景云丽.卢浩.宋源栋 GreatSQL社区原创内容未经授权不得随意使用,转 ...
- 技术分享|MySQL caching_sha2_password认证异常问题分析
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 0. 导读 相同的账号.密码,手动客户端连接可以成功,通过MySQL Conne ...
随机推荐
- C语言基础之四舍五入
要求:输入任意的2个小数:将这2个小数相加并显示结果:将结果按四舍五入方法转换成整数并显示. 0.0到0.4的数加上0.5不会进位,而0.5到0.9的数加上0.5会进位.所以可以依靠这个特点让计算后的 ...
- pwd详解
linux下pwd 命令详解 Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就 ...
- JavaFx之TableView表格添加按钮删除行(二十二)
JavaFx之TableView表格添加按钮删除行(二十二) JavaFx之TableView添加按钮 JavaFx之TableView删除行 编写一个xml <?xml version=&qu ...
- Ubuntu20.04 安装shutter
1 sudo add-apt-repository ppa:linuxuprising/shutter 2 3 sudo apt install shutter 4 5 卸载 6 sudo apt-g ...
- 文心一言 VS 讯飞星火 VS chatgpt (55)-- 算法导论6.3 1题
文心一言 VS 讯飞星火 VS chatgpt (55)-- 算法导论6.3 1题 一.参照图6-3 的方法,说明 BUILD-MAX-HEAP在数组 A=(5,3,17,10,84,19,6,22, ...
- Typecho 反向代理 http 访问强制启用生成 https 链接
问题描述 微酷是使用Nginx反向代理内网的Typecho站点,为了效率内网访问不需要使用https,这样Typecho接收到的请求是http协议的,于是网站内部资源链接被修改成了http. 解决方案 ...
- 十大 CI/CD 安全风险(五)
在本篇文章中,我们将了解第三方服务的监管不足,工件完整性验证及日志可见性不足这三个关键 CI/CD 安全风险,并给出缓解相应风险的建议与措施. 第三方服务监管不足 CI/CD 攻击面包括企业资产,例如 ...
- 在探索的道路上持续“做对”,火山引擎A/B测试成为这家企业数字基建
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 最近,乐刻的"百城万店"战略在行业激起了许多讨论.在传统健身馆经营承压.服务业难标准化的语 ...
- Axure 表单元件
文本框:一条 文本域:整个区域多行 单选:指定单元按钮组
- API 设计最佳实践(简版)
Restful API 本文简称API,是一个种面向资源的架构.在Restful中一个API对应一个资源,资源可以是文本,图片,视频等.API特征有如下: 每一个URI代表一种资源 客户端和服务器之间 ...