土法炼钢 · 系统与基础设施

【MySQL InnoDB 内核】监控体系:INNODB STATUS 与 Performance Schema

文章导航

分类入口
databasekernel
标签入口
#mysql#innodb#monitoring#performance-schema#innodb-status#exporter

目录

监控体系:INNODB STATUS 与 Performance Schema

告警只盯 Threads_running 时,真正的问题可能是 history list length 暴涨(purge 滞后)或 log mutex 等待——它们在 SHOW ENGINE INNODB STATUS 里有专门段落,却不在 SHOW GLOBAL STATUS 顶层。MySQL 8.0 的 Performance Schema 把锁、事务、内存分配细到线程级;配合 Prometheus mysqld_exporter 才能做 SLO。

本文对照 PG 监控篇,版本 8.0.36


一、监控分层

flowchart TB
  APP[应用 SLA] --> EXP[mysqld_exporter]
  EXP --> GSV[GLOBAL STATUS]
  EXP --> PFS[performance_schema]
  DBA[应急排查] --> STATUS[SHOW ENGINE INNODB STATUS]
  PFS --> LOCKS[data_locks]
  PFS --> TRX[events_transactions_*]
层级 工具 粒度
外显 SHOW GLOBAL STATUS 计数器
引擎快照 INNODB STATUS 瞬时结构
细粒度 PFS 线程/事件
时序 Prometheus + Grafana 趋势

二、INNODB STATUS 精读段落

SHOW ENGINE INNODB STATUS\G
段落 关注字段
BACKGROUND THREAD purge lag、main thread 状态
SEMAPHORES mutex/rw-lock 等待
LATEST DETECTED DEADLOCK 最近死锁图
TRANSACTIONS trx id、锁等待、HLL
BUFFER POOL AND MEMORY 命中率、脏页、young/old
INSERT BUFFER AND ADAPTIVE HASH INDEX ibuf/AHI
LOG LSN、log flushed、checkpoint age
ROW OPERATIONS 读写行速率

History list length(HLL):未 purge 的 undo 量——第 17 篇 长事务核心信号。


三、Performance Schema 关键表

-- 需本地验证
SELECT * FROM performance_schema.data_locks LIMIT 5;
SELECT * FROM performance_schema.data_lock_waits LIMIT 5;
SELECT * FROM performance_schema.events_transactions_current LIMIT 5;
用途
data_locks / data_lock_waits 锁等待链
events_transactions_* 事务阶段耗时
memory_summary_global_by_event_name InnoDB 内存
events_waits_summary_global_by_event_name mutex 热点

启用:performance_schema=ON(8.0 默认);部分 consumer 需 setup_consumers 打开。


四、mysqld_exporter 指标映射

指标族 InnoDB 含义
mysql_global_status_innodb_buffer_pool_pages_* BP 健康
innodb_os_log_written redo 写入速率
innodb_row_lock_time 行锁等待
innodb_data_pending_fsyncs 数据文件 fsync 积压

与应用 p99 延迟 同屏,避免只看平均 STATUS。


五、实验(需本地验证)

定期抓取 STATUS 与 PFS 基线;故障时对比 SEMAPHORESTRANSACTIONS 段差分。


六、关键要点

  1. INNODB STATUS 适合应急快照;PFS 适合关联线程。
  2. HLL 是 purge 滞后的一号信号。
  3. 死锁段 只保留最近一次——需持续采集若要做趋势。
  4. exporter 指标需与 STATUS 交叉验证口径。

十、PG 对照

维度 InnoDB 监控 PG
快照文本 SHOW ENGINE INNODB STATUS pg_stat_activity + views
data_locks / data_lock_waits pg_locks
后台 Page cleaner / purge 线程段 pg_stat_bgwriter
导出 mysqld_exporter postgres_exporter

PG 第 21 篇 强调 分层视图;InnoDB 传统 STATUS 是单页快照,应用 PFS 补齐时序维度。


上一篇Change Buffer 与 AHI

下一篇经典故障模式

参考资料

源码(MySQL 8.0.36)

官方文档

相关文章

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。


By .