使用prometheus统计MySQL自增主键的剩余可用百分比

 更新时间:2020年04月17日 11:51:03   作者:我的二狗呢  
这篇文章主要介绍了使用prometheus统计MySQL自增主键的剩余可用百分比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最近生产环境一套数据库因为疯狂写日志数据,造成主键值溢出的情况出现,因此有必要将这个指标监控起来。

mysqld_exporter自带的这个功能,下面是我使用的启动参数:

nohup ./mysqld_exporter --config.my-cnf="./my.cnf" --web.listen-address=":9104" --collect.heartbeat --collect.auto_increment.columns --collect.binlog_size --collect.engine_innodb_status --collect.engine_tokudb_status --collect.slave_hosts --collect.slave_status --collect.info_schema.processlist --collect.info_schema.innodb_metrics > /dev/null 2>&1 & 

红色高亮的参数,就是用来采集到自增id的使用情况的。

实际上执行的类似这个SQL:

SELECT 
 table_schema,
 table_name,
 column_name,
 AUTO_INCREMENT,
 POW(2, CASE data_type
   WHEN 'tinyint'  THEN 7
   WHEN 'smallint' THEN 15
   WHEN 'mediumint' THEN 23
   WHEN 'int'    THEN 31
   WHEN 'bigint'  THEN 63
   END+(column_type LIKE '% unsigned'))-1 AS max_int 
  FROM information_schema.tables t
   JOIN information_schema.columns c USING (table_schema,table_name)
  WHERE
   c.extra = 'auto_increment' 
  AND
   t.TABLE_SCHEMA NOT IN ('information_schema','mysql', 'sys','test','performance_schema') 
  AND
   t.auto_increment IS NOT NULL ;

在prometheus的web界面,我们可以测试编写如下的promql, 找出剩余自增id可以率少于40%的实例的库+表名

(mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'} - mysql_info_schema_auto_increment_column{schema!~'test|mysql'})/mysql_info_schema_auto_increment_column_max{schema!~'test|mysql'}*100 < 40

取到数据后,我们可以在alertmanager里面配置相关的告警,或者再grafana上面绘制图,如下:

到此这篇关于使用prometheus统计MySQL自增主键的剩余可用百分比的文章就介绍到这了,更多相关prometheus统计MySQL自增主键内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 8.0.19 安装配置方法图文教程

    mysql 8.0.19 安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql 8.0.19 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 与MSSQL对比学习MYSQL的心得(一)--基本语法

    与MSSQL对比学习MYSQL的心得(一)--基本语法

    最开始接触的数据库为MSSQL,不过最近项目需求,仔细学习了下MYSQL,下面就对比MSSQL,把MYSQL的学习心得分享给大家
    2014-06-06
  • mysql中的limit和offset用法详解

    mysql中的limit和offset用法详解

    这篇文章主要介绍了mysql中的limit和offset用法详解,limit一般被用来排序,offset一般和limit组合使用,本文对这两个函数进行详细介绍,需要的朋友可以参考下
    2023-10-10
  • Mysql如何避免全表扫描的方法

    Mysql如何避免全表扫描的方法

    如果MySQL需要做一次全表扫描来处理查询时,在 EXPLAIN 的结果中 type 字段的值是 ALL。
    2008-10-10
  • MySQL查看主从状态的命令实现

    MySQL查看主从状态的命令实现

    本文主要介绍了MySQL查看主从状态的命令实现,我们可以使用SHOW SLAVE STATUS命令来查看主从状态,本文就来详细的介绍一下如何实现,感兴趣的可以了解一下
    2023-10-10
  • 简单了解mysql方言dialect

    简单了解mysql方言dialect

    这篇文章主要介绍了简单了解数据库方言dialect,数据库方言也是如此,MySQL 是一种方言,Oracle 也是一种方言,MSSQL 也是一种方言,他们之间在遵循 SQL 规范的前提下,都有各自的扩展特性,需要的朋友可以参考下
    2019-07-07
  • MySQL 实现树的遍历详解及简单实现示例

    MySQL 实现树的遍历详解及简单实现示例

    这篇文章主要介绍了MySQL 实现树的遍历详解及简单实现示例的相关资料,这里提供了示例代码及测试结果,需要的朋友可以参考下
    2017-01-01
  • mysql中常用日期比较与计算函数

    mysql中常用日期比较与计算函数

    MYSQL数据库中的日期比较与计算是经常用到的,例如比较两个日期大小,计算两个日期相差多少天
    2018-03-03
  • mysql给一张表添加外键的4种方法

    mysql给一张表添加外键的4种方法

    这篇文章主要给大家介绍了关于mysql给一张表添加外键的4种方法,MySQL是一种常用的关系型数据库管理系统,它支持外键约束以保证数据库的数据完整性,需要的朋友可以参考下
    2023-08-08
  • 详解MySQL用事件调度器Event Scheduler创建定时任务

    详解MySQL用事件调度器Event Scheduler创建定时任务

    事件调度器(Event Scheduler)是在MySQLv5.1.6中新增的一个功能,它相当于一个定时器,可以在指定的时间点执行一条SQL语句或一个语句块,也可以用于在固定间隔重复执行。下面跟着小编一起来学习学习在MySQL中如何用事件调度器Event Scheduler创建定时任务
    2016-08-08

最新评论