热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用mysqladminext监控MySQL运行状态

本文介绍如何通过mysqladminext命令监控MySQL数据库的运行状态,包括性能指标的实时查看和分析。

mysqladmin是MySQL的一个重要客户端工具,除了用于常规的数据库管理操作如关闭数据库外,还能够帮助我们深入了解MySQL的运行状态。本文将重点介绍如何使用mysqladmin extended-status(简称ext)来监控MySQL的性能指标。

通过执行mysqladmin extended-status命令,用户可以获得类似于show global status的输出,显示MySQL的所有性能指标。由于大多数指标为累计值,为了获取当前的实时状态,可以通过计算两次查询之间的差异值来实现。mysqladmin extended-status命令提供了一个方便的选项-r(--relative),配合-i(--sleep)设置刷新频率,可以方便地查看实时变化的数据。例如,下面的命令每秒更新一次MySQL的性能指标:

mysqladmin -uroot -r -i 1 -pxxx extended-status

此外,结合grep命令,我们可以筛选出特定的性能指标,例如查询次数、插入次数等:

mysqladmin -uroot -r -i 1 -pxxx extended-status | grep 'Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete'

为了使输出更加直观,还可以使用awk命令添加时间戳,并进一步美化输出格式。例如,下面的命令不仅显示了时间,还对关键性能指标进行了格式化输出:

mysqladmin -uroot -p -h127.0.0.1 -P3306 -r -i 1 ext | awk -F'|' '{if($2 ~ /Variable_name/){print "<-----" strftime("%H:%M:%S") "----->";} if($2 ~ /Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete|Innodb_buffer_pool_read_requests/){print $2 $3;}}'

对于更复杂的输出需求,可以编写更为复杂的awk脚本,以获得更加详细和友好的输出结果。下面是一个示例脚本,它不仅显示了基本的时间和QPS(每秒查询数),还包括了各种SQL操作的统计以及InnoDB行操作和缓冲池读取的详细情况:

mysqladmin -P3306 -uroot -p -h127.0.0.1 -r -i 1 ext | awk -F'|' 'BEGIN{ count=0; } { if($2 ~ /Variable_name/ && ++count == 1){print "---|---|--- MySQL Command Status ---|--- Innodb row operation ---|--- Buffer Pool Read ---";print "--Time--|--QPS--|select insert update delete|read inserted updated deleted|logical physical";} else if ($2 ~ /Queries/){queries=$3;} else if ($2 ~ /Com_select/){com_select=$3;} else if ($2 ~ /Com_insert/){com_insert=$3;} else if ($2 ~ /Com_update/){com_update=$3;} else if ($2 ~ /Com_delete/){com_delete=$3;} else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;} else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;} else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;} else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;} else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;} else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;} else if ($2 ~ /Uptime/ && count >= 2){printf("%s |%9d",strftime("%H:%M:%S"),queries); printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete); printf("|%6d %8d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted); printf("|%10d %11d\n",innodb_lor,innodb_phr);}}'

以上脚本的输出示例:

---|---|--- MySQL Command Status ---|--- Innodb row operation ---|--- Buffer Pool Read ---
--Time--|--QPS--|select insert update delete|read inserted updated deleted|logical physical
10:37:13 | 2231| 274 214 70 0| 4811 160 71 0| 4146 0
10:37:14 | 2972| 403 256 84 23| 2509 173 85 23| 4545 0
10:37:15 | 2334| 282 232 66 1| 1266 154 67 1| 3543 0
10:37:15 | 2241| 271 217 66 0| 1160 129 66 0| 2935 0
10:37:17 | 2497| 299 224 97 0| 1141 149 95 0| 3831 0
10:37:18 | 2871| 352 304 74 23| 8202 226 73 23| 6167 0
10:37:19 | 2441| 284 233 82 0| 1099 121 78 0| 3292 0
10:37:20 | 2342| 279 242 61 0| 1083 224 61 0| 3366 0


推荐阅读
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文详细介绍了MySQL InnoDB存储引擎中的Redo Log和Undo Log,探讨了它们的工作原理、存储方式及其在事务处理中的关键作用。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文详细介绍了如何在Windows和Linux系统上配置Openfire服务器,包括安装步骤、数据库配置及端口映射等关键环节。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
author-avatar
yaunye
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有