- Percona Toolkit:DBA的瑞士军刀
这组命令行工具堪称MySQL运维的标配。里边的pt-query-digest强得离谱,直接能把慢查询日志嚼碎了分析出关键指标。曾经用它的pt-index-advise自动给单表提出了三个缺失索引,加上后查询速度直接翻了八倍。注意用的时候记得带上--filter参数,不然线上日志量能把你终端刷爆。
- VividCortex:实时监控神器
要是嫌自带的监控太粗糙,这个基于SaaS的监控平台能细到每个查询语句的延迟分布。我们生产环境曾经突然出现间歇性卡顿,就是靠它抓到了某个边缘功能的全表扫描操作。虽然收费但确实值,特别适合微服务架构下多数据库实例的统一监控。
- gh-ost:无痛在线表结构变更
当初就是被MySQL原生的online DDL坑过才找到这个宝贝。用Go写的,通过模拟从库+触发器的方式实现真·在线变更。最秀的是可以随时暂停/回滚,上次给2亿记录的表加索引,发现主库负载太高直接ctrl+c,业务完全无感知。
- Prometheus + Grafana:自定义监控全家桶
这套组合现在基本是基建标配了。关键是要会写针对性的PromQL,比如跟踪长事务的查询:。我们还在Grafana上做了个智能看板,WAL写入延迟、缓冲池命中率这些核心指标一目了然。
- Sysbench:压测必备利器
模拟真实压力还得靠这个老炮。建议别直接用默认脚本,自己根据业务场景写lua脚本。最近做分库分案前,用自定义脚本压出个诡异问题------连接池在高并发下会出现雪崩,要不是提前发现线上肯定要崩。
- Percona Monitoring and Management (PMM):开箱即用的监控方案
如果不想自己搭Prometheus,这个开源方案半小时就能建起全套监控。里面的QAN(查询分析器)特别实用,自动对SQL进行指纹归类,直接能看到哪个查询模板最耗资源。上周刚靠它揪出个深藏已久的N+1查询问题。
- pt-archiver:数据归档专用
别再用delete清理历史数据了,这个工具能边归档边清理,还不会产生巨型事务。配置好--where条件后自动分批处理,我们用来清理用户操作日志表,8000万记录归档完才锁了不到5分钟。
- MySQL Shell + InnoDB Cluster:高可用新选择
相比传统的MHA方案,官方出的这个集群方案配置简单多了。通过MySQL Shell几句代码就能拉起三节点集群,自动故障转移。测试时直接拔掉主库网线,应用重连时间控制在3秒内。
工具终究是工具,关键还是要建立完整的性能观测体系。建议在测试环境把每个工具都玩透,形成自己的排查套路。真正遇到性能危机时,能快速定位到是索引问题、配置问题还是架构问题,那才算真正出师了。