1MySQLTuner 简介
MySQLTuner 是最流行的 MySQL 调优脚本,GitHub Stars 超过 9k。
核心特点:
• 零依赖:单个 Perl 脚本,无需安装额外模块
• 快速执行:通常 5-10 秒完成全部检查
• 300+ 检查项:涵盖安全、性能、存储引擎、复制等全方位
• 清晰的输出:红/黄/绿三色标识问题等级
• 持续维护:项目活跃,定期更新适配新版 MySQL
检查维度包括:
1. 服务器基本信息和安全配置
2. 存储引擎统计和优化
3. 性能指标(Buffer Pool、Query Cache、Thread 等)
4. 复制状态检查
5. InnoDB 引擎深度分析
6. 日志和二进制日志配置
2快速开始
方法一:直接下载运行
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
perl mysqltuner.pl --host 127.0.0.1 --user root --pass yourpassword
方法二:使用包管理器
# Debian/Ubuntu
apt-get install mysqltuner
mysqltuner
# CentOS/RHEL
yum install mysqltuner
mysqltuner
常用参数:
--host 指定 MySQL 主机(默认 127.0.0.1)
--port 指定端口(默认 3306)
--user 连接用户名
--pass 连接密码
--forcemem 强制指定内存大小(MB)
--forceswap 强制指定 Swap 大小(MB)
--outputfile 输出到文件
--json JSON 格式输出
--verbose 详细输出模式
--cvefile CVE 漏洞数据库文件路径
3输出结果解读
MySQLTuner 的输出分为多个段落,每段用颜色标记问题等级:
[OK] — 绿色,配置正常
[!!] — 红色,需要立即关注
[--] — 黄色/信息,建议优化
关键输出段落解读:
1. General Statistics(基本统计)
显示 MySQL 版本、运行时间、连接数等基本信息。
重点关注:运行时间过短(< 24h)时统计数据不准确。
2. Storage Engine Statistics(存储引擎)
检查各存储引擎的使用情况和数据分布。
重点关注:是否有 MyISAM 表可以转换为 InnoDB。
3. Performance Metrics(性能指标)
包括 Thread Cache、Table Cache、Query Cache、Sort 等。
重点关注:命中率低于 90% 的指标。
4. InnoDB Metrics(InnoDB 指标)
详细的 InnoDB Buffer Pool、日志、IO 统计。
重点关注:Buffer Pool 命中率、日志大小建议。
5. Recommendations(建议)
最后的汇总建议,按优先级列出所有调优项。
4核心指标深度解析
以下是 DBA 最应关注的核心指标:
1. innodb_buffer_pool_size
建议值:物理内存的 50-70%
检查:Buffer Pool hit rate 应 > 99%
调整:如果 hit rate < 99%,逐步增大此值
2. max_connections
检查:Max_used_connections / max_connections 应 < 85%
风险:设置过大会浪费内存(每连接约 256KB-1MB)
建议:根据实际最大并发连接数 × 1.2 设置
3. thread_cache_size
检查:Thread cache hit rate 应 > 90%
目的:减少线程频繁创建销毁的开销
建议:设置为 max_connections 的 10-25%
4. innodb_log_file_size
检查:MySQLTuner 会根据写入量给出建议值
风险:过小导致频繁 checkpoint,过大导致恢复时间长
建议:确保 redo log 能容纳 1-2 小时的写入量
5. table_open_cache
检查:Table cache hit rate 应 > 80%
目的:减少频繁打开关闭表的开销
建议:通常设置为 max_connections × 常用表数
5与 DBCheck 配合使用
MySQLTuner 和 DBCheck 形成互补的巡检体系:
MySQLTuner 优势:
• 专注 MySQL 参数级调优,检查项更细(300+)
• 直接给出参数修改建议值
• 单脚本运行,适合快速诊断
DBCheck 优势:
• 生成专业 Word 巡检报告(含图表)
• 支持 Oracle / MySQL / PostgreSQL / SQL Server / 达梦 / 金仓 / 崖山 / TiDB / OceanBase
• 包含系统层面检查(CPU、内存、磁盘、IO)
• 44 项 MySQL 检查(含 19 项 MySQLTuner 精选指标移植)
• AI 智能分析建议
推荐的巡检流程:
1. 先用 MySQLTuner 快速扫描,了解整体状况(5 秒)
2. 再用 DBCheck 生成完整报告,交付给管理层(2 分钟)
3. 根据两份报告的交叉验证,制定优化计划
使用方式:
mysqltuner.pl --host x.x.x.x --user root --pass xxx
python3 mysql_check.py -H x.x.x.x -u root -p xxx
# 将 mysql_check 输出的 JSON 上传到 ora100.com 生成报告
6自动化巡检
将 MySQLTuner 集成到自动化巡检体系中:
1. Cron 定期执行
# 每周一凌晨 3 点执行
0 3 * * 1 perl /opt/mysqltuner.pl --host 127.0.0.1 --user monitor --pass xxx --outputfile /var/log/mysqltuner/$(date +\%Y\%m\%d).txt
2. JSON 输出 + 监控集成
mysqltuner.pl --json --outputfile /tmp/mysqltuner.json
# 解析 JSON 接入 Prometheus/Grafana/Zabbix
3. 多实例批量检查
#!/bin/bash
for host in db1 db2 db3; do
echo "=== Checking $host ==="
perl mysqltuner.pl --host $host --user monitor --pass xxx \
--outputfile /var/log/mysqltuner/${host}_$(date +%Y%m%d).txt
done
4. 邮件报告
# 结合 mail 命令发送巡检结果
mysqltuner.pl --host 127.0.0.1 --user monitor --pass xxx 2>&1 | \
mail -s "MySQL Weekly Health Check" dba@company.com