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. [BZOJ4820][SDOI2017]硬币游戏(高斯消元+KMP)

    比较神的一道题,正解比较难以理解. 首先不难得出一个(nm)^3的算法,对所有串建AC自动机,将在每个点停止的概率作为未知数做高斯消元即可. 可以证明,AC自动机上所有不是模式串终止节点的点可以看成一 ...

  2. BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机 后缀自动机 字符串

    https://www.lydsy.com/JudgeOnline/problem.php?id=3926 广义后缀自动机是一种可以处理好多字符串的一种数据结构(不像后缀自动机只有处理一到两种的时候比 ...

  3. mysql数据库cup飙升处理思路

    1.先top查看是那一个进程,哪个端口占用CPU多. 2.show processeslist查看是否由于大量并发,锁引起的负载问题. 3.否则,查看慢查询,找出执行时间长的sql:explain分析 ...

  4. 五子棋游戏 canvas 事件 边界检测

    //有一定基础的人才能看得懂 <!doctype html><html lang="en"> <head> <meta charset=& ...

  5. Android 手机 ADB FastBoot 命令基本用法

    adb用法: 准备: 1.在电脑上安装相应的USB驱动,在各分区置顶帖子有下载链接 2.手机进入设置->开发人员选项->勾选USB调试 adb devices 查看是否有设备 adb sh ...

  6. 05引用类型以及特殊引用类型string

    基本 □ 哪些属于引用类型 类(object,string),接口.数组.委托 □ 引用类型分配在哪里 ● 引用类型变量位于线程栈. ● 引用类型实例分配在托管堆上. ● 当引用类型实例的大小小于85 ...

  7. restful api安全验证问题

    没有绝对的安全,这个话题很深, 下文都是自己的一些理解,水平有限,如有勘误,希望大家予以指正. 由于 RESTful Api 是基于 Http 协议的 Api,是无状态传输,所以 只要和用户身份有关的 ...

  8. 8个免费且实用的C++ GUI库(转载)

      原文链接:http://zoomzum.com/8-free-and-useful-c-gui-libraries/ 作者的话:C++标准中并没有包含GUI,这也使得C++开发图形化界面需要依赖于 ...

  9. .NET:“事务、并发、并发问题、事务隔离级别、锁”小议,重点介绍:“事务隔离级别"如何影响 “锁”?

    备注 我们知道事务的重要性,我们同样知道系统会出现并发,而且,一直在准求高并发,但是多数新手(包括我自己)经常忽略并发问题(更新丢失.脏读.不可重复读.幻读),如何应对并发问题呢?和线程并发控制一样, ...

  10. [Android UI] ActionBar 自定义属性

    actionbar 默认放在顶部, 如果在application或者activity中加入 android:uiOptions="splitActionBarWhenNarrow" ...