
你是否遇到过这些场景?
别慌!今天,我们开源一个超实用的MySQL自动巡检工具——只需1条命令,自动生成包含50+关键指标的HTML健康报告,覆盖性能、安全、容量、高可用、备份建议等11大维度!
💡 无需安装依赖(除 pymysql),支持手动输入账号密码,绝不泄露敏感信息!
1. 这份报告能告诉你什么?
我们的脚本不是简单跑几个 SHOW STATUS,而是真正站在 DBA + 运维 + 安全 的角度,深度扫描你的 MySQL 实例:
🎯 所有结果以可视化 HTML 报告呈现,红绿灯式预警,一目了然!
2. 如何使用?3 步搞定!
第1步:安装依赖(仅需一次)
pip install pymysql第2步:保存脚本为 mysql_inspect.py
我已经迭代了个4个大版本十余个小版本,兼容MySQL5.6至MySQL8.4,其他低版本暂未测试过,感兴趣的可以自己测试。(联系我可以提供完整代码)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
MySQL 全面巡检脚本 v4.2 (增强 InnoDB Status 展示)
✅ 修复 IndexError
✅ 完整展示 InnoDB Status 关键段落
✅ 兼容 MySQL 5.6 / 5.7 / 8.0 / 8.4
"""
import pymysql
import os
import sys
import getpass
import datetime
from collections import OrderedDict
REPORT_DIR = 'report'
os.makedirs(REPORT_DIR, exist_ok=True)
def prompt_host_resources():
print("\n💻 请输入主机资源配置(用于参数合理性分析):")
cpu_cores_str = input("CPU 核数 (默认: 8): ").strip() or "8"
memory_gb_str = input("内存大小 (GB, 默认: 16): ").strip() or "16"
disk_tb_str = input("数据盘总容量 (TB, 默认: 2): ").strip() or "2"
第3步:运行脚本
python3 mysql_inspect.py然后按提示输入:
💻 请输入主机资源配置(用于参数合理性分析):
CPU 核数 (默认: 8): 4
内存大小 (GB, 默认: 16): 8
数据盘总容量 (TB, 默认: 2): 1
📝 请输入 MySQL 连接信息:
Host (默认: 127.0.0.1): 192.168.1.15
Port (默认: 3306): 3307
User: ops
Password: 🔒 密码输入时不会回显,安全可靠!

📁 报告自动保存到 report/ 目录,打开即看!
3. 报告内容如下








实现代码已经特别做了兼容
slave_status = None
replica_rows = run_query(conn, "SHOW REPLICA STATUS")
if not replica_rows:
replica_rows = run_query(conn, "SHOW SLAVE STATUS")
if replica_rows:
cursor = conn.cursor()
cursor.execute("SHOW SLAVE STATUS")
if cursor.description:
cols = [d[0] for d in cursor.description]
slave_status = dict(zip(cols, replica_rows[0]))
cursor.close()
if slave_status:
io_running = slave_status.get('Slave_IO_Running', 'No')
sql_running = slave_status.get('Slave_SQL_Running', 'No')
seconds_behind = slave_status.get('Seconds_Behind_Master', None)
relay_space = slave_status.get('Relay_Log_Space', 0)
data['replication'] = {
'io_running': io_running,
'sql_running': sql_running,
'seconds_behind': seconds_behind,
'relay_log_space_mb': round(int(relay_space) / 1024 / 1024, 2),
'master_host': slave_status.get('Master_Host', 'N/A')
}
else:
data['replication'] = None



注: 如需导出为 PDF、邮件发送、或定时任务调度,也可以继续扩展。
4. 小结
数据库稳定是业务的生命线。与其等到故障发生再救火,不如定期巡检、防患未然。为什么推荐这个脚本?主要有如下几个特点:
快把这个巡检脚本转发给你的DBA,咱们一起进行改进,把它加入我们公共的运维工具箱吧。