专栏首页二狗的DBA之路prometheus 统计MySQL 自增主键的剩余可用百分比

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上面绘制图,如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 脚本找出mysql中缺少主键的表

    MYSQL_CMD="mysql -u$user -h$host -p$pass -S$sock"

    二狗不要跑
  • 监控mysql索引使用效率的脚本

    从这位仁兄的博客转载来的http://blog.itpub.net/133735/

    二狗不要跑
  • 找出没有主键的表

    MySQL中, 如果表没有主键的时候,会造成主从延迟。 因此我们需要找出没有主键的表,然后人工加个主键。

    二狗不要跑
  • .net中使用oracle数据库分页的土办法

    近日公司一网站项目,要调用其它系统(call center系统)的oracle数据库数据,只能连接查询,无法创建存储过程,所以只能在sql语句上动脑筋实现分页:...

    菩提树下的杨过
  • 使用memcache对wordpress优化,提速

    一个部署在虚拟机中( 虚拟机安装memcache缓存),然后用这个优化的版本跟本地开发环境对比.

    猿哥
  • Nfs不安全的配置漏洞

    0x00 前言 NFS 代表网络文件系统,是一种可以在 Unix 系统中找到的协议,允许网络上的用户以类似于本地存储的方式访问共享文件夹。现代 NFS 实现包...

    用户1467662
  • 设计数据密集型应用(4):Encoding and Evolution

    分布式系统滚动升级的过程中,新旧数据与代码是同时并存的。如果出现异常,可能还需要回退程序。因此,升级过程中需要保证:

    linjinhe
  • C#创建数字证书并导出为pfx,并使用pfx进行非对称加解密

    本文源程序下载:http://download.csdn.net/source/2444494 我的项目当中,考虑到安全性,需要为每个客户端分发一个数字证书,同...

    庞小明
  • 安全部门监测发现恶意后门程序新变种

    国家网络安全部门通过对互联网的监测发现,近期出现一种恶意后门程序变种Backdoor_Parite.B. 该变种是一个远程控制程...

    安恒信息
  • 技术干货:实时视频直播首屏耗时400ms内的优化实践

    直播行业的竞争越来越激烈,进过2018年这波洗牌后,已经度过了蛮荒暴力期,剩下的都是在不断追求体验。最近正好在做直播首开优化工作,实践中通过多种方案并行,已经能...

    JackJiang

扫码关注云+社区

领取腾讯云代金券