本页是 PmaControl 的原创文档。它保留了用于 MySQL 优化工作的实用索引结构,不复制第三方内容,也不依赖外部产品。
目标
MySQL 健康检查用于确认服务器是否具备可运维的健康状态:可用性、容量、限制一致性、无关键风险信号以及最低配置质量。
核心检查
- 运行时间和近期重启。
- 连接数相对于
max_connections的饱和度。 - buffer pool 的磁盘读取比例。
- 在磁盘上创建的临时表数量。
- 连接错误和
Aborted_clients。 - 长锁、死锁和等待查询。
- datadir、二进制日志和 redo 日志的剩余空间。
基础 SQL
SHOW GLOBAL STATUS LIKE 'Uptime';
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
SHOW GLOBAL STATUS LIKE 'Created_tmp_disk_tables';
SHOW ENGINE INNODB STATUS\G
解读
健康检查不应只是红绿列表。它必须解释影响、优先级以及如何确认诊断。
先确认实例身份并获取最新快照
记录主机名、数据库版本、实例角色、观测时间和应用影响。检查应用、代理与数据库之间的完整链路:SQL 连接成功不代表客户端能访问正确的写入节点。找出最后一次正常运行的时段,将重启与部署、主机事件及错误日志关联。
SELECT NOW() AS observed_at, @@hostname AS hostname,
VERSION() AS server_version, @@global.read_only AS read_only;
SHOW GLOBAL VARIABLES WHERE Variable_name IN (
'max_connections', 'datadir', 'tmpdir', 'log_error'
);
SHOW GLOBAL STATUS WHERE Variable_name IN (
'Uptime', 'Threads_connected', 'Threads_running',
'Max_used_connections', 'Connection_errors_max_connections',
'Aborted_clients', 'Aborted_connects', 'Innodb_log_waits',
'Innodb_buffer_pool_reads', 'Innodb_buffer_pool_read_requests',
'Created_tmp_tables', 'Created_tmp_disk_tables'
);
分析速率和资源压力,而非孤立总值
对累计计数器,在同一连续运行区间内取两次样本。物理读取占比 = ΔInnodb_buffer_pool_reads / ΔInnodb_buffer_pool_read_requests,且分母必须大于零。该比值描述未命中缓冲池的读取,并不能单独说明存储健康状况;还应比较每秒物理读取量和磁盘延迟。Max_used_connections 是重置后的历史峰值,Threads_connected 是当前值。空闲连接与正在执行的工作消耗不同的资源。
磁盘临时表占比仅是线索。MySQL TempTable 溢出到内存映射文件的情况并未完整体现在 Created_tmp_disk_tables 中,因此低占比不能证明临时处理都在 RAM 中。连接中断增加时,应结合应用、超时及网络证据,再判断是否为数据库故障。
检查事务、复制节点与主机
SELECT trx_id, trx_state, trx_started, trx_mysql_thread_id,
trx_rows_locked, trx_rows_modified
FROM information_schema.innodb_trx
ORDER BY trx_started
LIMIT 20;
SHOW ENGINE INNODB STATUS\G
长事务可能处于空闲状态,但仍持有锁或阻碍 purge。停止事务之前,应确认其负责人和业务操作;回滚本身也可能耗时。对 MySQL 8.0.22+ 的复制节点,检查 SHOW REPLICA STATUS\G 中接收和应用状态、最近错误及复制延迟。MariaDB 与较早的 MySQL 需使用各自版本的命令和字段。延迟为零不等于数据足够新,应核验应用水位及所有配置的复制通道。
df -h /var/lib/mysql
df -i /var/lib/mysql
vmstat 1 5
将示例路径替换为实际 datadir,并检查临时文件和二进制日志所在的独立挂载点。检查可用字节数、inode、I/O 延迟、内存压力和实际 swap I/O。比较区间时忽略 vmstat 的首条报告。备份验证应包含成功恢复测试、测得的恢复耗时及要求的恢复点,不能仅依据备份任务完成。
确定问题优先级
| 信号 | 下一步 |
|---|---|
| 写入节点不可用或磁盘耗尽 | 立即恢复并保留证据 |
| 错误、锁等待或复制延迟持续增加 | 关联当前客户端影响 |
| 仅历史峰值偏高而无当前压力 | 观察趋势并评估容量 |
继续排查
- 在性能评估中记录负责人、证据与复查日期。