【MySQL】常用监控指标及监控方法

转自:https://www.cnblogs.com/wwcom123/p/10759494.html 

对之前生产中使用过的MySQL数据库监控指标做个小结。

 指标分类 指标名称 指标说明
性能类指标 QPS 数据库每秒处理的请求数量
TPS 数据库每秒处理的事务数量
并发数 数据库实例当前并行处理的会话数量
连接数 连接到数据库会话的数量
缓存命中率 查询命中缓存的比例
高可用指标 可用性 数据库是否可以正常对外服务
阻塞 当前阻塞的会话数
慢查询 慢查询情况
主从延迟 主从延迟时间
主从状态 主从链路是否正常
死锁 查看死锁信息

【QPS指标】   

show global status where variable_name in ('Queries', 'uptime');

 QPS = (Queries2 -Queries1) / (uptime2 - uptime1)

【TPS指标】  

show global status where variable_name in ('com_insert' , 'com_delete' , 'com_update', 'uptime');

事务数TC ≈'com_insert' , 'com_delete' , 'com_update'

TPS  ≈ (TC2 -TC1) / (uptime2 - uptime1)

  

【并发数】

show global status like 'Threads_running';

【连接数】

当前连接数:

show global status like 'Threads_connected';

最大连接数:

show global status like 'max_connections';

生产中配置报警阈值:Threads_connected /  max_connections > 0.8

【缓存命中率】

innodb缓冲池查询总数:

show global status like 'innodb_buffer_pool_read_requests'; 

innodb从磁盘查询数:

show global status like 'innodb_buffer_pool_reads'; 

生产中配置报警阈值:(innodb_buffer_pool_read_requests - innodb_buffer_pool_reads) / innodb_buffer_pool_read_requests > 0.95

【可用性】

方法1:周期性连接数据库并执行  select @@version;

方法2:mysqladmin -u数据库用户名 -p数据库密码 -h数据库实例IP ping     

【阻塞】

   MySQL5.7之前:

select b.trx_mysql_thread_id as '被阻塞线程',b.trx_query as '被阻塞SQL',c.trx_mysql_thread_id as '阻塞线程',c.trx_query as '阻塞SQL',(unix_timestamp()-unix_timestamp(c.trx_started)) as '阻塞时间'
from information_schema.innodb_lock_waits a
join information_schema.innodb_trx b on a.requesting_trx_id=b.trx_id
join information_schema.innodb_trx c on a.blocking_trx_id=c.trx.id
where(unix_timestamp()-unix_timestamp(c.trx_started))>阻塞秒数

  MySQL5.7及之后:

  为方便查询阻塞指标,MySQL将2张表join构造了一个view sys.innodb_lock_waits,查询语句得以大大简化。

select waiting_pid as '被阻塞线程',waiting_query as '被阻塞SQL',blocking_pid as '阻塞线程',blocking_query as '阻塞SQL',wait_age as '阻塞时间',sql_kill_blocking_query as '建议操作'
from sys.innodb_lock_waits
where(unix_timestamp()-unix_timestamp(wait_started))>阻塞秒数

【慢查询】

方法1:开启慢查询日志my.inf

slow_query_log=on
slow_query_log_file=存放目录
long_query_time=0.1秒
log_queries_not_using_indexes=on

注:只对新建连接生效,实时生效使用命令set global 上述配置项。

方法2:

select * from information_schema.'processlist';

    

【主从延迟】

方法1:

show slave status;

问题:

该方法是基于relaylog的时间与master的时间差值,并不太准,例如大事务时,主从延时已发生,但relaylog还未生成。

  

方法2:使用Percona的pt-heartbeat工具

  • Master后台周期写入:
pt-heartbeat --user=Master用户名 --password=Master密码 --h MasterIP --create-table --database 测试库名 --updatte --daemonize --interval=1

--create-table   在Master上创建心跳监控表heartbeat,通过更新该表知道主从延迟的差距。

--daemonize   后台执行。

--interval=1 默认1秒执行一次。

  • Slave后台周期同步读取:
pt-heartbeat --user=Slave用户名 --password=Slave密码 --h SlaveIP --database 库名 --monitor --daemonize --log /slave_lag.log

--monitor参数是持续监测并输出结果

【主从状态】

show slave status;

【死锁】

方法1:查看最近一次死锁信息:

show engine innodb status;

方法2:使用Percona的pt-deadlock-logger工具

1.打开死锁打印全局开关

set global innodb_print_all_deadlocks=on; 

2.使用pt-deadlock-logger工具

监控到的死锁结果可以输出到文件、指定表、或者界面打印。

pt-deadlock-logger h=数据库IP,u=数据库用户名,p=数据库密码

输出结果非常详尽:

server:数据库服务器地址,即死锁产生的数据库主机

ts:检测到死锁的时间戳

thread:产生死锁的线程id,这个id和show processlist里面的线程id是一致的

txn_id:innodb的事务ID

txd_time:死锁检查到前,事务执行时间

user:执行transcation的用户名

hostname:客户端主机名

ip:客户端ip

db:发生死锁的DB名

tbl:死锁发生的表名

idx:产生死锁的索引名(在上面这个demo里面, 我们直接走的主键,加的记录锁)

lock_type:锁的类型(记录锁,gap锁,next-key锁)

lock_mode:锁模式(S,X)

wait_hold:是否等着锁释放,一般死锁都是两个wait

victim:该会话是否做了牺牲,终止了执行

query:造成死锁的SQL语句

【MySQL】常用监控指标及监控方法

对之前生产中使用过的MySQL数据库监控指标做个小结。

指标分类 指标名称 指标说明
性能类指标 QPS 数据库每秒处理的请求数量
TPS 数据库每秒处理的事务数量
并发数 数据库实例当前并行处理的会话数量
连接数 连接到数据库会话的数量
缓存命中率 查询命中缓存的比例
高可用指标 可用性 数据库是否可以正常对外服务
阻塞 当前阻塞的会话数
慢查询 慢查询情况
主从延迟 主从延迟时间
主从状态 主从链路是否正常
死锁 查看死锁信息

【QPS指标】  

show global status where variable_name in ('Queries', 'uptime');

 QPS = (Queries2 -Queries1) / (uptime2 - uptime1)

【TPS指标】  

show global status where variable_name in ('com_insert' , 'com_delete' , 'com_update', 'uptime');

事务数TC≈'com_insert' , 'com_delete' , 'com_update'

TPS  ≈ (TC2 -TC1) / (uptime2 - uptime1)

  

【并发数】

show global status like 'Threads_running';

【连接数】

当前连接数:

show global status like 'Threads_connected';

最大连接数:

show global status like 'max_connections';

生产中配置报警阈值:Threads_connected /  max_connections > 0.8

【缓存命中率】

innodb缓冲池查询总数:

show global status like 'innodb_buffer_pool_read_requests'; 

innodb从磁盘查询数:

show global status like 'innodb_buffer_pool_reads'; 

生产中配置报警阈值:(innodb_buffer_pool_read_requests - innodb_buffer_pool_reads) / innodb_buffer_pool_read_requests > 0.95

【可用性】

方法1:周期性连接数据库并执行  select @@version;

方法2:mysqladmin -u数据库用户名 -p数据库密码 -h数据库实例IP ping     

【阻塞】

   MySQL5.7之前:

select b.trx_mysql_thread_id as '被阻塞线程',b.trx_queryas '被阻塞SQL',c.trx_mysql_thread_idas '阻塞线程',c.trx_queryas '阻塞SQL',(unix_timestamp()-unix_timestamp(c.trx_started)) as '阻塞时间'
frominformation_schema.innodb_lock_waits ajoin information_schema.innodb_trx b on a.requesting_trx_id=b.trx_idjoin information_schema.innodb_trx c on a.blocking_trx_id=c.trx.idwhere(unix_timestamp()-unix_timestamp(c.trx_started))>阻塞秒数

  MySQL5.7及之后:

  为方便查询阻塞指标,MySQL将2张表join构造了一个view sys.innodb_lock_waits,查询语句得以大大简化。

select waiting_pid as '被阻塞线程',waiting_queryas '被阻塞SQL',blocking_pidas '阻塞线程',blocking_queryas '阻塞SQL',wait_ageas '阻塞时间',sql_kill_blocking_queryas '建议操作'
fromsys.innodb_lock_waitswhere(unix_timestamp()-unix_timestamp(wait_started))>阻塞秒数

【慢查询】

方法1:开启慢查询日志my.inf

slow_query_log=on
slow_query_log_file=存放目录
long_query_time=0.1秒
log_queries_not_using_indexes=on

注:只对新建连接生效,实时生效使用命令set global 上述配置项。

方法2:

select * from information_schema.'processlist';

    

【主从延迟】

方法1:

show slave status;

问题:

该方法是基于relaylog的时间与master的时间差值,并不太准,例如大事务时,主从延时已发生,但relaylog还未生成。

  

方法2:使用Percona的pt-heartbeat工具

  • Master后台周期写入:
pt-heartbeat --user=Master用户名 --password=Master密码 --h MasterIP --create-table --database 测试库名 --updatte --daemonize --interval=1

--create-table   在Master上创建心跳监控表heartbeat,通过更新该表知道主从延迟的差距。

--daemonize   后台执行。

--interval=1 默认1秒执行一次。

  • Slave后台周期同步读取:
pt-heartbeat --user=Slave用户名 --password=Slave密码 --h SlaveIP --database 库名 --monitor --daemonize --log /slave_lag.log

--monitor参数是持续监测并输出结果

【主从状态】

show slave status;

【死锁】

方法1:查看最近一次死锁信息:

show engine innodb status;

方法2:使用Percona的pt-deadlock-logger工具

1.打开死锁打印全局开关

set global innodb_print_all_deadlocks=on; 

2.使用pt-deadlock-logger工具

监控到的死锁结果可以输出到文件、指定表、或者界面打印。

PT-LOCK

pt-deadlock-logger h=数据库IP,u=数据库用户名,p=数据库密码

输出结果非常详尽:

server:数据库服务器地址,即死锁产生的数据库主机

ts:检测到死锁的时间戳

thread:产生死锁的线程id,这个id和show processlist里面的线程id是一致的

txn_id:innodb的事务ID

txd_time:死锁检查到前,事务执行时间

user:执行transcation的用户名

hostname:客户端主机名

ip:客户端ip

db:发生死锁的DB名

tbl:死锁发生的表名

idx:产生死锁的索引名(在上面这个demo里面, 我们直接走的主键,加的记录锁)

lock_type:锁的类型(记录锁,gap锁,next-key锁)

lock_mode:锁模式(S,X)

wait_hold:是否等着锁释放,一般死锁都是两个wait

victim:该会话是否做了牺牲,终止了执行

query:造成死锁的SQL语句

分类: MySQL
谢谢推荐! 关注我 收藏该文  
wwcom123
关注 - 0
粉丝 - 0
+加关注

1
0
支持成功

« 上一篇: 【MySQL】percona-toolkit工具包 
» 下一篇: 【TOGAF】总体认知

posted @ 2019-04-24 21:35 wwcom123 阅读(353) 评论(0) 编辑 收藏

刷新评论刷新页面返回顶部
发表评论

昵称:

评论内容:
     

退出 订阅评论

[Ctrl+Enter快捷键提交]

【推荐】超50万C++/C#源码: 大型实时仿真组态图形源码
【推荐】华为云·云创校园套餐9元起,小天鹅音箱等你来拿
【推荐】零基础轻松玩转云上产品,获壕礼加返百元大礼
相关博文:
· mysql性能监控指标
· mysql常用参数监控
· mysql常用参数监控
· Mysql性能监控
· mysql主要性能监控指标
最新 IT 新闻
· 中国联通5G套餐资费公布:确认了一下 是我用不起的价格! 
· 病死率几乎100%的传染病,危险就在我们身边,破解方法只此一个 
· 对至强处理器不满意 谷歌云服务要转向AMD霄龙处理器 
· 杨元庆:联想要做智能化样板,未来帮助其他企业 
· 美四家火箭公司争抢军方大单,蓝色起源抗议竞争规则不公 
» 更多新闻...

转载于:https://www.cnblogs.com/gered/p/11359828.html

【2】【MySQL】常用监控指标及监控方法(转)相关推荐

  1. Java虚拟机监控指标及监控配置

    版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/70229653 主要是对Java虚 ...

  2. MySQL常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结. 指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的会 ...

  3. 【MySQL】常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结.  指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的 ...

  4. mysql监控项目以及指标_【MySQL】常用监控指标及监控方法

    对之前生产中使用过的MySQL数据库监控指标做个小结. 指标分类 指标名称 指标说明 性能类指标 QPS 数据库每秒处理的请求数量 TPS 数据库每秒处理的事务数量 并发数 数据库实例当前并行处理的会 ...

  5. linux 网络监控指标,Linux监控一些指标

    进程监控:top 虚拟内存统计:vmstat vmstat 2 1(隔2秒,采样一次) 测试参数 r :表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高 b :表示阻塞 ...

  6. centos下mysql常用的三种备份方法_centos下mysql自动备份(全量)

    1.新建mysql的备份目录mkdir -p path/mysql/backup/ 2.新建备份脚本vi path/mysql/backup/backup.sh #!/bin/bash backupd ...

  7. 智能巡检云监控指标的实践

    简介:在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警.具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决! 背景介绍 在 ...

  8. rds for mysql的监控指标_mysql(RDS)常用性能指标监控

    Mysql 1.1.1监控指标说明 主要针对SQL耗时.吞吐量(QPS TPS)命中率 锁等待等指标进行监控. 本来运维工具产品有以下参数:(global status里面的状态量) TPS/QPS ...

  9. ML之ME/LF:机器学习之风控业务中常用模型监控指标CSI(特征稳定性指标)的简介、使用方法、案例应用之详细攻略

    ML之ME/LF:机器学习之风控业务中常用模型监控指标CSI(特征稳定性指标)的简介.使用方法.案例应用之详细攻略 目录 CSI(特征稳定性指标)的简介 1.如何计算CSI? 2.CSI值的意义 3. ...

最新文章

  1. 大数据营销要学会做减法
  2. ASPNET开源项目
  3. 阅读A Practical Guide to Support Vector Classification
  4. 机器思维。一些让我眼前一亮的算法。
  5. c语言输出七个换行6,多样例输出,如何去掉最后一个回车
  6. 跟随我在oracle学习php(42)
  7. 阶段3 1.Mybatis_10.JNDI扩展知识_1 补充-JNDI概述和原理
  8. 全网最全实现元素(盒子、图片)水平垂直方向居中
  9. 更改wordpress上传文件大小限制
  10. 【测试】软件测试之测试用例的设计方法
  11. C语言实现自制图片文件合成器
  12. 【X265】Win10环境编译FFmpeg,集成 x264、x265、avs2
  13. magicmatch java_签名图片一键批量生成 使用Java的Webmagic爬虫实现
  14. CSDN:借助工具对【本博客访问来源】进行数据图表可视化(网友主要来自欧美和印度等)——记录数据来源截止日期20190811
  15. 三轴机械手结构化编程5轴伺服项目
  16. 神州战神笔记本开启/关闭键盘背光灯的方法,control center使用配置,控制风扇转速,减少噪音
  17. Transformer-XL
  18. Android使用GoogleMap实现定位及定位回正
  19. vmware tool下载安装
  20. java中什么是外层实例,ew MyAsyncTask(); 报错

热门文章

  1. 微信公众号 服务器配置 token 测试,微信公众号开发:基本配置Token验证简单事件回复...
  2. 深度:日本老年食品市场规模超过千亿,国内零食巨头旺旺集团已抢先布局!
  3. Git 安装教程(Windows)
  4. 预案三板斧之限流大法
  5. jQuery Tooltip插件
  6. java图书管理系统,javaSwing图书管理系统学习心得
  7. P22:Sequential以及搭建网络小实战(Pytorch小土堆学习笔记)
  8. Duplicated key ‘xxxxxx‘
  9. excel中常见函数的用法
  10. display-visibility-opacity