使用工具分析mysql性能
关于MySQL调优的事,基于实际工作负载、慢查询日志和监控指标分析,调整后用 SHOW VARIABLES
和 SHOW GLOBAL STATUS
验证效果
可使用工具辅助调优:
MySQLTuner
Percona Toolkit
MySQLTuner 和 Percona Toolkit 这两个工具都是运维和 DBA 常用的 MySQL 性能分析与优化工具,可以帮助你快速发现配置不合理、SQL 慢、内存不足等问题。
1. 介绍MySQLTuner
MySQLTuner 是一个 Perl 编写的轻量脚本工具,用于对运行中的 MySQL 实例做健康检查并给出优化建议(非自动修改,只建议)
安装方式:
wget http://mysqltuner.pl/ -O mysqltuner.pl
chmod +x mysqltuner.pl
或者:
sudo apt install mysqltuner # Debian/Ubuntu
sudo yum install mysqltuner # RHEL/CentOS(需要 EPEL)
使用方式:
perl mysqltuner.pl
或者加上登录信息
perl mysqltuner.pl --user=root --pass=你的密码
输出内容示例:
-
服务器运行时间、MySQL 版本
-
当前连接数、线程使用、缓存命中率
-
慢查询、临时表使用、索引使用率
-
建议调整的参数:如
innodb_buffer_pool_size
太小、query_cache
建议关闭等
注意:
-
运行前最好让 MySQL 跑一段时间(几个小时或几天),否则数据不准确
-
建议用在 生产环境运行稳定后 做分析
在云上 MySQL(如阿里云 RDS、腾讯云 MySQL、AWS RDS 等)环境中,使用 mysqltuner.pl
工具会有一些使用限制,因为你无法直接登录主机去执行 Perl 脚本。但你仍然可以通过远程连接方式使用它分析数据库性能。
云上 MySQL 使用 mysqltuner 的方法:
准备一台可以联网的 Linux 主机或本地电脑
你可以在:
-
云服务器 ECS / CVM(与 RDS 同区域网络)
-
本地开发机(需能连通 RDS 的外网/内网地址)
使用数据库账号连接(一般是 root 或具有 SHOW STATUS
, SHOW VARIABLES
等权限的只读账号)
perl mysqltuner.pl --host=<RDS地址> --user=<用户名> --pass=<密码> --port=<端口>
例如:
perl mysqltuner.pl --host=rm-bp12345678.mysql.rds.aliyuncs.com --user=readonly --pass=xxx123 --port=3306
注意事项:
-
如果你是阿里云/腾讯云 RDS,确保:
-
开启了白名单或安全组放行你所在 IP
-
用户权限满足
SHOW VARIABLES
,SHOW STATUS
(建议授予SELECT
也行)
注意事项:
-
如果你是阿里云/腾讯云 RDS,确保:
-
开启了白名单或安全组放行你所在 IP
-
用户权限满足
SHOW VARIABLES
,SHOW STATUS
(建议授予SELECT
也行)
-
手动执行sql采集指标
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Connections';
SHOW GLOBAL STATUS LIKE 'Aborted_connects';
SHOW GLOBAL STATUS LIKE 'Slow_queries';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'max_connections';
2. Percona Toolkit 使用方法
Percona Toolkit 是一套功能非常强大的工具集合,支持:
-
慢查询日志分析(
pt-query-digest
) -
主从延迟监控(
pt-heartbeat
) -
表结构对比(
pt-table-checksum
) -
数据同步修复(
pt-table-sync
)
安装方式:
# Debian / Ubuntu
sudo apt install percona-toolkit
# RHEL / CentOS
sudo yum install percona-toolkit
常用命令示例:
1. 分析慢查询日志
pt-query-digest /var/log/mysql/slow.log
输出内容包括:
最慢/最频繁/最占时间的 SQL
每条 SQL 的总耗时、平均耗时、执行次数
可以定位具体表、语句是否有索引问题
2. 检查主从是否一致(主备一致性)
pt-table-checksum --host=master_host --user=root --password=xxx
3. 修复主从数据不一致
pt-table-sync --execute --replicate=percona.checksums --sync-to-master h=slave_host,u=root,p=xxx
总结对比:
工具 主要用途 特点 建议使用场景
MySQLTuner 优化建议检查 简单快速、非侵入式 每周/每月跑一次,健康体检
Percona Toolkit 深度分析工具集 专业级、功能强大 性能分析、慢SQL、主从一致性检查