https://blog.csdn.net/zhaowenbo168/article/details/53219860

1.摘要

本人从事Java Web开发,在项目开发中会用到很多中间件,本文主要介绍MySQL监控的一点心得和使用,公司DBA也有相应的监控,但是我们的业务比较重要,想做一个备份监控,对MySQL监控需要做监控和预警,首先需要有数据,数据采集之前要知道自己需要监控哪些指标,有可能监控之前有些指标没有想到,在做的过程中可能思路就会逐渐清晰,监控MySQL的作用:(1)定时监控MySQL的健康状况,能够及时发现问题;(2)根据一些指标的历史趋势图能够对系统做优化。

2.监控指标

(1)QPS (每秒查询量)、TPS(每秒事物量)

(2)增删改查的分量

(3)连接数、正在使用的连接数、最大连接数

(4)慢查询

(5)流量统计

(6)Innodb、MyISAM缓冲池

3.监控结构

MySQL的监控分为两部分,一部分是定时器,每两分钟(时间间隔根据自己的需求定义)负责采集数据和监控的预警(针对QPS、连接数、流量等指标超过阈值给出短信和邮件预警),另一部分是监控结果的展示,在前端页面展示方便查看和数据的对比。

4.数据采集和显示

可以使用两种SQL语句查询MySQL的状态变量的值,结果一样,查询方式:(1)SHOW GLOBAL STATUS;(2)SELECT * FROM information_schema.SESSION_STATUS;状态变量的详解参见:http://blog.csdn.net/zhaowenbo168/article/details/53199585

4.1 QPS、TPS

MySQL的状态变量里有个Questions(已经发送给服务器的查询的个数)变量,Questions的值是增量的,我们是每隔两分钟采集一个点,QPS=(Questions2-Questions1)/Time,TPS=((Com_commit2 - Com_commit1)+ (Com_rollback2 - Com_rollback1))/Time;  监控的QPS和TPS的量,如果超出阈值(具体的阈值根据机器的性能和业务数据量来预估),则给预警,另外可以根据历史趋势图,如果发现QPS的TPS的值逐渐增高,可能是业务量增大了或者有可能有人攻击你的服务器(例如采用查询一些非热点数据,直接透过缓存,达到攻击的目的),根据历史的趋势图可以提前做好DB的扩容和优化等。

4.2 增删改查的分量

select的量=(Com_select2 - Com_select1)/Time,insert、update和delete同理,如果要计算读和写的量,writes = insert + update + delete;

4.3 连接数、正在使用的连接数、最大连接数

连接数=Threads_connected,正在使用的连接数=Threads_running,最大连接数使用命令SHOW VARIABLES LIKE 'max_connections'查询,如果正在使用的连接数远远小于实际的连接数,可能是你的服务连接数配置过大,如果连接数太大,可能会对你的DB会造成一定的压力,另外需要监控连接数,例如当连接数达到最大连接数的60%给出预警,可能是业务量的增大造成连接数的增加,能够提前感知DB的状态,保证服务的稳定。

4.4 慢查询

慢查询=Slow_queries,具体的慢查询的SQL语句需要查日志;MySQL默认超过10s的查询记录的为慢查询,可以自定义慢查询的时间(例如0.5s)等,监控慢查询的数量,如果出现,及时查看那些SQL语句引起的慢查询,然后可能需要对这些SQL或者服务做优化;

4.5 流量统计

发送的流量=Bytes_sent2 - Bytes_sent2 ,接收的流量=Bytes_received2 - Bytes_received1,如果DB Server的服务器上只有DB服务,发送流量和接收流量之和就是服务器的流量情况的,监控流量是否在网卡的可承受范围之内,以便服务的稳定,如果超出阈值,提前预警和优化(比如网卡的流量等)。

4.6 Innodb、MyISAM缓冲池

一个数据库实例中可能有的表用Innodb存储引擎,有的表用MyISAM存储引擎,MySQL 默认的存储引擎 是InnoDB,它使用了一片称为缓冲池的内存区域,用于缓存数据表与索引的数据。缓冲池指标属于资源指标,而非工作指标,前者更多地用于调查(而非检测)性能问题。如果数据库性能开始下滑,而磁盘 I/O 在不断攀升,扩大缓冲池往往能带来性能回升。可以通过SHOW TABLE STATUS from database_name where Name='table_name';查询表的存储引擎是哪个。

Innodb缓冲池使用率=(Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total,buffer_pool_pages是缓冲池的页数,默认每页为 16 KiB,或 16,384 字节,你可以使用:SHOW VARIABLES LIKE "innodb_page_size";查看,Innodb缓冲池的大小=Innodb_buffer_pool_pages_total*innodb_page_size。

MyISAM缓冲池使用率=Key_blocks_used/(Key_blocks_unused +Key_blocks_used) 。默认MyISAM缓冲池的大小为16MB,可以使用SHOW VARIABLES LIKE '%key_buffer_size%';查看。

本文仅供给参考,还有诸多不足,只是站在自己的角度的一些看法。

MySQL监控和预警的更多相关文章

  1. MySQL监控、性能分析——工具篇

    https://blog.csdn.net/leamonjxl/article/details/6431444 MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性 ...

  2. MySQL监控、性能分析——工具篇(转载)

    MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预 ...

  3. 如何在Zabbix上安装MySQL监控插件PMP

    PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...

  4. DB监控-mysql监控

    Mysql监控属于DB监控的模块之一,包括采集.展示.监控告警.本文主要介绍Mysql监控的主要指标和采集方法. Mysql监控和Redis监控的逻辑类似,可参考文章<Redis监控>. ...

  5. 分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控

    Zabbix3.0 Server以后就自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了. 以下是公司线上的zabbix3.0环境下添加 ...

  6. 详解 Spotlight on MySQL监控MySQL服务器

    前一章详解了Spotlight on Unix 监控Linux服务器 ,今天再来看看Spotlight on MySQL怎么监控MySQL服务器. 注:http://www.cnblogs.com/J ...

  7. 京东MySQL监控之Zabbix优化、自动化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangwei007.blog.51cto.com/68019/1833332 随 ...

  8. Spotlight on MySQL监控MySQL服务器

    第一步: 下载并安装mysql-connector-3.5x Spotlight on MySQL 连接mysql必须使用mysql-connector-3.5x,5.3.2版本我试了下不行,有兴趣可 ...

  9. mysql监控管理工具--innotop

    https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/innotop/innotop-1.9. ...

随机推荐

  1. Struts2 (上)

    Struts2简介 Struts2框架的作用 Struts2是一个基于MVC设计模式的Web应用框架 它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controlle ...

  2. 1265. [NOIP2012] 同余方程

    1265. [NOIP2012] 同余方程 ★☆   输入文件:mod.in   输出文件:mod.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余 ...

  3. [BZOJ4565][HAOI2016]字符合并(区间状压DP)

    https://blog.csdn.net/xyz32768/article/details/81591955 首先区间DP和状压DP是比较明显的,设f[L][R][S]为将[L,R]这一段独立操作最 ...

  4. 洛谷.4512.[模板]多项式除法(NTT)

    题目链接 多项式除法 & 取模 很神奇,记录一下. 只是主要部分,更详细的和其它内容看这吧. 给定一个\(n\)次多项式\(A(x)\)和\(m\)次多项式\(D(x)\),求\(deg(Q) ...

  5. XMOJ 1133: 膜拜大牛 计算几何/两圆相交

    1133: 膜拜大牛 Time Limit: 1 Sec  Memory Limit: 131072KiBSubmit: 9619  Solved: 3287 题目连接 http://acm.xmu. ...

  6. C#高级编程9 第14章 内存管理和指针

    C#高级编程9 内存管理和指针 后台内存管理 1) 值数据类型 在处理器的虚拟内存中有一个区域,称为栈,栈存储变量的浅副本数据,通过进入变量的作用域划分区域,通过离开变量的作用域释放. 栈的指针指向栈 ...

  7. Git_创建与合并分支

    在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...

  8. TLC2262和TLC2264 轨对轨运算放大器

    TLC2262和TLC2264分别是TI公司双路和四路运算放大器,两种器件可以在单电源或双电源条件下供电,从而增强了动态的范围,可以达到轨对轨输出的性能.TLC226X系列与TLC225X的微功耗和T ...

  9. XDM、GDM和KDM

    XDM.GDM.KDM是三种X Window的显示管理器 (1)XDM(默认的X Window System Display Manager)(2)GDM(gnome提供的Display Manage ...

  10. java基础学习总结——网络编程

    一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.