PmaControl logo PmaControl
  • 首页
  • PmaControl
    • AI智能代理 13个本地代理
    • 定价方案 Community、Cloud、On-Premise、Premium
    • 文档 指南、API、架构
    • 版本历史 全部 5.x 稳定版本
    • 插件市场 社区插件
    • 客户 28+企业
    • 常见问题 25个问题 / 7个类别
    数据库
    • MariaDB 35 篇文章
    • MySQL 15 篇文章
    • Galera Cluster 6 篇文章
    • MaxScale 4 篇文章
    • ProxySQL 3 篇文章
    • Amazon Aurora MySQL 0 篇文章
    • Azure Database 0 篇文章
    • ClickHouse 0 篇文章
    • GCP CloudSQL 0 篇文章
    • Percona Server 0 篇文章
    • SingleStore 0 篇文章
    • TiDB 0 篇文章
    • Vitess 0 篇文章
    解决方案
    • 全天候支持 MariaDB & MySQL紧急支持
    • Observabilité SQL 监控、告警、拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Sécurité & conformité 审计、GDPR、SOC2
    • Migration & upgrade 零停机、pt-osc、gh-ost
  • 定价方案
  • 资源
    • 文档 技术指南与API
    • MySQL 优化中心 Markdown 索引、指标、参数、故障
    • 常见问题 25个常见问题
    • 客户评价 客户反馈与案例
    • 博客 文章与洞察
    • 路线图 即将推出的功能
    专业领域
    • Observabilité SQL 监控、告警、Dot3拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Sécurité & conformité 审计、GDPR、SOC2、ISO 27001
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Performance & optimisation Digests、EXPLAIN、调优
    • Migration & upgrade 零停机、pt-osc
    快速链接
    • GitHub Wiki 26页 — 安装、引擎、插件
    • 源代码 GitHub官方仓库
    • 全天候支持 MariaDB & MySQL紧急支持
    • 预约演示 30分钟 — 真实架构
  • 全天候支持
  • 预约演示
预约演示
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
资源 › MySQL 优化中心 › MySQL 健康检查

MySQL 健康检查

用于诊断、衡量和优化 MySQL 的结构化 Markdown 文档。

本页是 PmaControl 的原创文档。它保留了用于 MySQL 优化工作的实用索引结构,不复制第三方内容,也不依赖外部产品。

目标

MySQL 健康检查用于确认服务器是否具备可运维的健康状态:可用性、容量、限制一致性、无关键风险信号以及最低配置质量。

核心检查

  1. 运行时间和近期重启。
  2. 连接数相对于 max_connections 的饱和度。
  3. buffer pool 的磁盘读取比例。
  4. 在磁盘上创建的临时表数量。
  5. 连接错误和 Aborted_clients。
  6. 长锁、死锁和等待查询。
  7. 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 的首条报告。备份验证应包含成功恢复测试、测得的恢复耗时及要求的恢复点,不能仅依据备份任务完成。

确定问题优先级

信号 下一步
写入节点不可用或磁盘耗尽 立即恢复并保留证据
错误、锁等待或复制延迟持续增加 关联当前客户端影响
仅历史峰值偏高而无当前压力 观察趋势并评估容量

继续排查

  • 在性能评估中记录负责人、证据与复查日期。

官方参考资料

  • MySQL replication status
  • MySQL internal temporary tables
PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
法律声明 GitHub 联系我们
不要等到故障发生才了解您的架构。 © 2014-2026 PmaControl — 68Koncept