服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|

服务器之家 - 数据库 - Mysql - ps-top 用于MySQL的数据库top工具

ps-top 用于MySQL的数据库top工具

2020-12-17 22:31今日头条虫虫安全 Mysql

本文虫虫给大家介绍一个命令行工具ps-top,可从MySQL 5.6+的performance_schema数据库中收集信息,并使用该信息实时显示服务器负载。

熟悉Linux的同学都很喜欢top命令,可以让我们很方便快捷的一键获取系统运行状态。除了系统状态,很多人可能也希望能一键获得数据库的运行状态,很多人会用show profile或者performance_schema数据库获取各种信息。但是很方便和直接。

本文虫虫给大家介绍一个命令行工具ps-top,可从MySQL 5.6+的performance_schema数据库中收集信息,并使用该信息实时显示服务器负载。数据以表或文件名显示,实时显示在选择,插入,更新或删除活动时候信息情况;视图显示用户活动,显示使用相同用户名连接的不同主机的数量以及这些用户的活动视图;关于互斥、锁表和sql阶段计时的统计信息视图。

ps-top 用于MySQL的数据库top工具

安装

和一般的golang工具一样,ps-top安装很简单,直接用go get就可以下载、编译,安装好:

go get -u github.com/sjmudd/ps-top/cmd/ps-top或 

go get -u github.com/sjmudd/ps-top/cmd/ps-stats 

ps-top 用于MySQL的数据库top工具

这样就会直接安装下载工具及其依赖项,安装后的二进制文件在$GOPATH/bin/目录。如果该路径在系统PATH设置中,则无需指定任何特定路径即可直接运行程序。

访问MySQL

可以通过以下方法之一访问MySQL:

  • 默认使用文件~/.my.cnf。
  • 制定cnf文件,通过--defaults-file=/path/to/.my.cnf。
  • 使用--host=somehost --port=999 --user=someuser --password=somepass连接到主机
  • 通过本机socket连接 --socket=/path/to/mysql.sock --user=someuser --password=somepass
  • 如果未指定,则用户默认为的内容$USER。如果未指定端口,则默认为3306。

可以通过命令行选项--use-environment ps-top或者ps-stats,则在环境变量中查找MYSQL_DSN的账号信息去连接Mysql。MYSQL_DSN格式为式:

user:pass@tcp(host:port)/performance_schema 

这样就避免在命令行中直接显示账号和密码,防止信息泄露。

MySQL/MariaDB配置

performance_schema数据库必须配置为支持ps-top。默认情况下,在MySQL上会启用此功能。MariaDB> = 10.0.12上则禁用此功能。因此,需额外配置启用,在/etc/my.cnf中,设置:

performance_schema = 1 

然后重新启动MariaDB才能生效。

ps-top和ps-stats需要问performance_schema表的SELECT权限。如果无法访问所需表,它们将不会运行。

setup_instruments:查看mutex_latency或stages_latency 根据需要修改改配置,保证用户有权限执行此操作。如果服务器,--read-only或者没有足够的权限来更改这些表,则这些视图可能为空。如果在启动时成功更新了表,则停止ps-top之前,该setup_instruments配置会将其恢复为原始设置。

视图

ps-top和ps-stats可以显示7个不同的数据视图,这些视图默认情况下每秒更新一次。这7个视图为:

table_latency:表等待执行操作的时间显示活动。

ps-top 用于MySQL的数据库top工具

table_ops:按MySQL执行的活动数显示活动。

ps-top 用于MySQL的数据库top工具

file_io_latency:显示MySQL在文件I/O上花费的时间。

ps-top 用于MySQL的数据库top工具

table_lock_latency:根据表锁显示顺序

ps-top 用于MySQL的数据库top工具

user_latency:根据用户运行查询的时间或用户与MySQL的连接数显示排序。它提供了一些信息,还显示了总的空闲时间,因为这表明可能有过长的空闲查询,如果有堆积,这里的值之和可能很有趣。

ps-top 用于MySQL的数据库top工具

mutex_latency:按互斥锁延迟显示排序。

ps-top 用于MySQL的数据库top工具

SQL Stages_latency:在不同的SQL查询阶段中按时间显示排序。

ps-top 用于MySQL的数据库top工具

可以更改轮询间隔并在模式之间进行切换。

快捷键

在ps-top模式下,以下按键可以让ps-top在不同模式浏览或更改其行为。

h ?:显示帮助。

ps-top 用于MySQL的数据库top工具
  • · 将轮询间隔减少1秒(最少1秒)
  • + 将轮询间隔增加1秒
  • q-退出
  • t:在显示自重置ps-top开始以来显示统计信息或您显式重置它们(使用'z')[REL]或显示从MySQL收集的统计信息之间切换[ABS]。
  • z:重置统计信息。那就是您看到的与"重置"统计信息有关的计数器。
  • :更改显示模式:延迟,操作,文件I/O,锁定,用户,互斥,阶段和存储模式。
  • 左箭头:切换到上一个屏幕
  • 向右箭头:切换至下一个屏幕

标准输出模式

ps-stats和,ps-top都具有与相同的视图输出,会定时发送到stdout。默认视图为table_io_latency。可以使用与vmstat相同的方法来调整收集间隔和收集数据的次数。第一个参数是delay(默认为1秒),第二个参数是要进行的迭代次数,如果未提供,则为一直运行。该模式旨在用于使用stdout作为输出媒体来监视ps-top并从中收集数据。

ps-top 用于MySQL的数据库top工具

相关的命令行选项包括:

  • --count= 限制迭代次数(默认值:永久运行)
  • --interval= 设置默认轮询间隔(以秒为单位)
  • --limit= 限制输出的行数(不包括标题)
  • --stdout 将输出发送到stdout(不是屏幕)
  • --view= 确定要在ps-时查看的视图顶部开始(默认:table_io_latency)可能的值:table_io_latency,table_io_ops,file_io_latency,table_lock_latency, user_latency,mutex_latency和stages_latency。
  • --totals 仅显示总计行,而不显示明细。

总结

本文我们介绍了一个golang撰写的命令行工具,用来以top形式方式很方便的获取Myql的一些运行状态,适合广大运维和DBA作为一个称手的工具,大家也可以作为golang语言学习范例项目。

原文地址:https://www.toutiao.com/i6906764954867663368/

延伸 · 阅读

精彩推荐
  • Mysql实现MySQL回滚的Python脚本的编写教程

    实现MySQL回滚的Python脚本的编写教程

    这篇文章主要介绍了实现MySQL回滚的Python脚本的编写教程,文中的回滚针对的是DELETE语句的数据库误操作,需要的朋友可以参考下 ...

    MYSQL教程网3022020-05-24
  • Mysql基于SQL中的数据查询语句汇总

    基于SQL中的数据查询语句汇总

    以下是对SQL中的数据查询语句进行了汇总介绍,需要的朋友可以过来参考下 ...

    MYSQL教程网2422020-01-07
  • MysqlMySQL 5.6 中 TIMESTAMP有那些变化

    MySQL 5.6 中 TIMESTAMP有那些变化

    前段时间,系统MySQL从5.5升级到了5.6,系统出现了大量的异常。大部分异常引起原因是由于TIMESTAMP的行为发生了变化,下面通过此篇文章给大家详解MySQL 5.6...

    MYSQL教程网3362020-05-17
  • Mysqlmysql 性能的检查和调优方法

    mysql 性能的检查和调优方法

    我一直是使用mysql这个数据库软件,它工作比较稳定,效率也很高。 ...

    mysql教程网4962019-10-27
  • Mysqlmysql5.7.17在win2008R2的64位系统安装与配置实例

    mysql5.7.17在win2008R2的64位系统安装与配置实例

    本篇文章主要给大家介绍了mysql5.7.17在win2008R2的64位系统安装与配置实例,以及在配置过程中遇到的问题解决办法。...

    MYSQL教程网2192020-08-20
  • Mysql记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解决办法

    记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-my

    在aliyun上安装MySQL时由于上次错误卸载mysql 导致校验文件出问题。下面小编给大家分享记录无法安装mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解...

    STANO0011562020-07-10
  • MysqlMySQL注入绕开过滤的技巧总结

    MySQL注入绕开过滤的技巧总结

    这篇文章主要介绍了关于MySQL注入时绕开过滤的技巧,文中通过图文与示例代码介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。 ...

    MYSQL教程网4402020-07-18
  • MysqlADODB 入门

    ADODB 入门

    1. 前言 ADODB 是 Active Data Objects Data Base 的简称,它是一种 PHP 存取数据库的函式组件。现在 SFS3 系统 (校园自由软件交流网学务系统) 计划的主持人陈莹光老...

    脚本之家3112019-10-16