文章目录

  • 生猛干货
  • 官方文档
  • 监控指标
  • 数据库可用性监控
    • 如何确认数据库是否可以通过网络连接?
    • 如何确认数据库是否可读写
    • 如何监控数据库的连接数 max_connections | Threads_connected
  • 数据库性能
    • 如何计算QPS和TPS
      • QPS
      • TPS
    • 并发数量监控 Threads_running
    • Innodb的阻塞监控
  • 搞定MySQL

生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


官方文档

https://dev.mysql.com/doc/

如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


监控指标

先大体说下几个点哈

  • 对数据库服务可用性进行监控

    有一点需要注意的是,不能仅仅监控端口或者进程是否正常,要连接进去,执行一些SQL操作。

  • 对数据库性能进行监控

    这一块就比较多了, 比如QPS 和TPS的监控, 并发线程的监控 (不是数据库的连接数)、 阻塞和死锁监控 等等

  • 对主从复制的监控

    主从链路状态 、 主从延迟 、 主从数据一致

  • 对服务器资源的监控

    磁盘空间、内存 、SWAP分区、网络I/O 、CPU等等

接下来,展开探讨一下


数据库可用性监控

如何确认数据库是否可以通过网络连接?

MySQL本地的SQL文件能连接,并不意味着可以通过网络连接,中间有好多东西隔着呢

通常有几种方式,选一种

  • mysqladmin -umonitor_user -p -h ping

    -u 监控的用户
    
  • telnet ip db_port

  • 模拟应用程序使用网络建立数据库连接 (推荐)


如何确认数据库是否可读写

  • 检查数据库的read_only参数是否为off

    比如从库这个参数 建议关闭 ,主从切换后,这个参数就要打开,防止新的主不可写。
    
  • 建立监控表,并对表中数据进行更新

  • 如果检测是否可读的话 ,执行 select @@version


如何监控数据库的连接数 max_connections | Threads_connected

需要时刻关注DB连接数

  • show variables like ‘max_connections’ , 然后 show global status like ‘Threads_connected’

    max_connections参数用来设置最大连接(用户)数 , Threads_connected查看当前打开的连接的数量, 可以用这个两个参数的比值超过阈值进行告警等。

mysql>  show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)mysql> show global status like 'Threads_connected' ;
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_connected | 4     |
+-------------------+-------+
1 row in set (0.00 sec)mysql> 
mysql>  show global status like 'Threads_running';   # 当前连接数
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Threads_running | 2     |
+-----------------+-------+
1 row in set (0.04 sec)mysql> 

数据库性能

记录性能监控中所采集到的数据库的状态

下面我们列举下最常见的监控指标

如何计算QPS和TPS

QPS 并不是仅仅只select 的,而是数据库处理所有SQL请求的。

QPS

公式 (采集两次,通过差值获取)

QPS=(Queries2 - Queries1) / (Uptime_since_flush_status2-Uptime_since_flush_status1)

这些参数都可以通过show status 来获取 如下

mysql> show global status like 'queries'; # 这个值时累加的;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Queries       | 4820  |
+---------------+-------+
1 row in set (0.05 sec)mysql> show global status like 'uptime_since_flush_status';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| Uptime_since_flush_status | 536208 |
+---------------------------+--------+
1 row in set (0.03 sec)mysql> 

TPS

公式

TPS = ((com_insert2+com_update2+com_delete2)-(com_insert1+com_update1+com_delete1)/(uptime_since_flush_status2-uptime_since_flush_status1);

同样的 这些参数都可以通过show status 来获取 如下

mysql>  show global status like 'com_insert';   # 写入事务的数量,这个值是累加的
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_insert    | 1038  |
+---------------+-------+
1 row in set (0.04 sec)mysql> show global status like 'com_update';   # 更新事务的数量,这个值是累加的
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_update    | 4     |
+---------------+-------+
1 row in set (0.00 sec)mysql> show global status like 'com_delete';   # 删除事务的数量,这个值是累加的
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_delete    | 1     |
+---------------+-------+
1 row in set (0.00 sec)mysql> show global status like 'uptime_since_flush_status';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| Uptime_since_flush_status | 536404 |
+---------------------------+--------+
1 row in set (0.04 sec)mysql> 

并发数量监控 Threads_running

数据库系统的性能会随着并发处理请求数量的增加而下降;

并发的数量通常会远小于同一时间连接到数据库的线程数量。

获取并发量

mysql>  show global status like 'Threads_running';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Threads_running | 2     |
+-----------------+-------+
1 row in set (0.04 sec)mysql> 

Innodb的阻塞监控

阻塞时间> 60秒的 SQL

SELECTb.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 '阻塞时间'
FROMinformation_schema.INNODB_LOCK_WAITS AS a
JOIN information_schema.INNODB_TRX AS b ON a.requesting_trx_id = b.trx_id
JOIN information_schema.INNODB_TRX AS c ON a.blocking_trx_id = c.trx_id
WHERE(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(c.trx_started)) > 60;


搞定MySQL

MySQL-数据库监控初探相关推荐

  1. 使用开源实时监控系统 HertzBeat 5分钟搞定 Mysql 数据库监控告警

    使用开源实时监控系统 HertzBeat 对 Mysql 数据库监控告警实践,5分钟搞定! Mysql 数据库介绍 MySQL是一个开源关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 O ...

  2. MySQL监控,MySQL数据库监控软件简介

    MySQL监控,MySQL数据库监控软件 Mysql数据库监控软件(简称:MySQL数据库监控或MySQL监控)是对Mysql运行时性能.连接数.线程.查询速度.吞吐量.锁等MySQL运行状态进行全面 ...

  3. mysql数据库,mysql数据库监控介绍

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBM ...

  4. dmb mysql_DMB(For MySQL)数据库监控备份工具

    因为初学Python, 花费了几个礼拜的周末休息时间, DMB的雏形已经出来, 并提供下载使用(适合新手和偷懒的人高手跳过),有Bug和建议请及时发聩给我. 因为是初学,在编写DMB的时候,当中遇到一 ...

  5. mysql数据库监控

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBM ...

  6. Zabbix监控系统系列之十七:MYSQL数据库监控

    ======= 系列目录 ======= Zabbix监控系统系列之一 : Server部署 Zabbix监控系统系列之二 : 初始化配置 Zabbix监控系统系列之三 :版本升级 Zabbix监控系 ...

  7. 品牌的mysql数据库监控_zabbix实现mysql数据库的监控(四)

    前面介绍的内容都是用第三方开发好的插件进行mysql监控的,可能有些我们关心的监控内容并不在其中,这时一种常用的方法就是定义我们自己的脚本并将它整合到zabbix中,从而在原有监控的基础上进行有力的补 ...

  8. mysql 数据库监控

    nagios监控服务器长期对内网用MySQL数据库发出ctritical报警,这时候就需要根据其status对其Mysql数据库进行优化了,这时候可以等MySQL服务器稳定运行了一段时间后运行,根据服 ...

  9. GPE监控预警系统使用【 mysql数据库监控】

    一:搭建GPE监控预警系统 参考文章:https://blog.csdn.net/weixin_30641567/article/details/103426376 二:监控mysql数据库 Step ...

  10. zabix5.0-0 agent2实现Mysql数据库监控并监控多台mysql

    Mysql数据库安装步骤链接:https://bbs.huaweicloud.com/blogs/245624  (已安装数据库此步骤可省略~!!) 至少需要两台虚拟机进行试验 一台服务端(监控端)j ...

最新文章

  1. 【专栏】好Leader和差Leader的8个区别
  2. MySQL 数据库的操作 连接、新增、删除、选择数据库 命令行(带图)
  3. 使用Windows8开发Metro风格应用五
  4. Android ListView几个重要属性
  5. methods中axios里的数据无法渲染到页面
  6. 求立方根_「每日一学」数学七上:立方根的知识要点
  7. [网络流24题] 最长递增子序列
  8. Python 为什么要用线程池?
  9. linux压缩文件命令_Linux基础篇(二)--Linux常用命令
  10. 建筑施工承插型盘扣式钢管支架安全技术规程_承插型盘扣式钢管支架施工技术交底(视频教程)...
  11. 从php的生命周期来优化页面响应时间
  12. java读取txt配置文件_Java程序读写配置文件(以纯文本.txt类型示例)
  13. 伪装苹果android id,小心了,别被伪造的 iOS 系统弹窗骗走 Apple ID
  14. 数字图像处理100问—27 双三次插值( Bicubic Interpolation )
  15. 计算机金额函数,Excel数字转大写金额方法 一个隐藏函数搞定
  16. 微信小程序 | 微信公众平台SpringBoot开发实例 │ 表情消息
  17. Heatmap热力图、pandas.DataFrame.corr()、皮尔森相关系数
  18. donald knuth --图灵奖获奖者
  19. 骑士周游 探索访问
  20. MT9V034摄像头学习笔记(二)

热门文章

  1. flask的同一ip域名不同端口的两个网站session冲突
  2. yolov3 anchor 理解
  3. python 操作 hbase
  4. pandas 指定某一列的数据类型
  5. 基于xgboost 的贷款风险预测
  6. iphone屏蔽系统更新_未越狱屏蔽系统更新还是来了
  7. toch_geometric 笔记:message passing GCNConv
  8. MATLAB实战系列(二十六)-matlab通过遗传算法求解车间调度问题
  9. 滴滴算法大赛算法解决过程 - 机器学习
  10. MongoDB导出csv格式数据