热门标签 | 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


推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • 本文介绍了一种在 MySQL 客户端执行 NOW() 函数时出现时间偏差的问题,并详细描述了如何通过配置文件调整时区设置来解决该问题。演示场景中,假设当前北京时间为2023年2月17日19:31:37,而查询结果显示的时间比实际时间晚8小时。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
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社区 版权所有