MySQL监控和预警
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监控和预警的更多相关文章
- MySQL监控、性能分析——工具篇
https://blog.csdn.net/leamonjxl/article/details/6431444 MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性 ...
- MySQL监控、性能分析——工具篇(转载)
MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预 ...
- 如何在Zabbix上安装MySQL监控插件PMP
PMP,全称是Percona Monitoring Plugins,是Percona公司为MySQL监控写的插件.支持Nagios,Cacti.从PMP 1.1开始,支持Zabbix. 下面,看看如何 ...
- DB监控-mysql监控
Mysql监控属于DB监控的模块之一,包括采集.展示.监控告警.本文主要介绍Mysql监控的主要指标和采集方法. Mysql监控和Redis监控的逻辑类似,可参考文章<Redis监控>. ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控
Zabbix3.0 Server以后就自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了. 以下是公司线上的zabbix3.0环境下添加 ...
- 详解 Spotlight on MySQL监控MySQL服务器
前一章详解了Spotlight on Unix 监控Linux服务器 ,今天再来看看Spotlight on MySQL怎么监控MySQL服务器. 注:http://www.cnblogs.com/J ...
- 京东MySQL监控之Zabbix优化、自动化
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangwei007.blog.51cto.com/68019/1833332 随 ...
- Spotlight on MySQL监控MySQL服务器
第一步: 下载并安装mysql-connector-3.5x Spotlight on MySQL 连接mysql必须使用mysql-connector-3.5x,5.3.2版本我试了下不行,有兴趣可 ...
- mysql监控管理工具--innotop
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/innotop/innotop-1.9. ...
随机推荐
- hihocoder 1526 序列的值
题面在这里! 好久没做题啦,养生一下qwq 推一推贡献就会发现这TM就是一个水题啊! #include<bits/stdc++.h> #define ll long long using ...
- URAL 1876 Centipede's Morning
1876. Centipede's Morning Time limit: 0.5 secondMemory limit: 64 MB A centipede has 40 left feet and ...
- Charles基本使用—http抓包、手机抓包、数据篡改
本文主要介绍如下内容: 1.Charles如何抓取HTTP报文 2.Charles如何抓取手机上的HTTP包 3.使用Charles篡改数据信息 一.Charles抓取HTTP包 1.Charles的 ...
- 基于RBGD的mapping
最近学习RGBD的SLAM,收集了两个RGBD的mapping的开源工具包 1.RGBDSlam2 a.安装方法: #准备工作空间 source /opt/ros/indigo/setup.bash ...
- NAT(网络地址转换)
NAT(Network Address Translation,网络地址转换) 用途:当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机 ...
- C#使用反射加载多个程序集
当开发插件的时候需要用到反射,在客户端动态加载遍历程序集,并调用每个程序集的方法. 创建一个控制台应用程序,首先设计一个接口: public interface ISay { void SaySth( ...
- 将一张表中的字段更新到另一张表的sql
UPDATE tb_user a INNER JOIN tb_doctor s ON s.id=a.id SET a.AVATAR=s.AVATAR UPDATE tb_user a INNER JO ...
- Weblogic下启用Gzip压缩
一.首先,去http://sourceforge.net/projects/filterlib网站下载tk-filters-1.0.1.zip. 二.解压这个tk-filters-1.0.1.zip压 ...
- [翻译] Working with NSURLSession: AFNetworking 2.0
Working with NSURLSession: AFNetworking 2.0 简单翻译,有很多错误,看官无法理解处请英文原文对照. http://code.tutsplus.com/tu ...
- [部署Mantis]用Administrator注册新用户时设置密码
伤不起的Mantis邮箱配置,在新的Mantis配置里面默认通过接收激活邮件来设定密码. 如果你Mantis邮箱配置OK的话一切OK,遇到我这样死活配不成功,网络上大神们众说纷纭,一一参照,无奈死伤无 ...