您的位置:首页 > 数据库 > MySQL

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

2019-08-08 23:50 1756 查看

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



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%的实例的库+表名



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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: