怎么处理多台服务器的慢查询日志聚合_跨实例监控仪表盘

风强吖_1163

风强吖_1163

2026-04-17

248人浏览

原创

最稳做法是用 pt-query-digest 原生跨文件聚合,配合 --filter 标注 server_id 并 --group-by fingerprint,server_id;禁用 cat 拼接,避免时间戳混乱;performance_schema 不可替代 slow log 回溯分析;grafana 对比需通过 prometheus+mysqld_exporter 预聚合指标实现。

用 pt-query-digest 聚合多实例慢日志最稳

直接上结论:别自己写脚本拼接日志,pt-query-digest 原生支持跨文件、跨实例聚合,还能自动去重和归一化 sql。它不依赖数据库连接,纯日志分析,出错率低、结果可信。

常见错误是把各台服务器的 slow.log 直接 cat 到一起再喂给 pt-query-digest——这会导致时间戳混乱、客户端 IP 混淆、无法按实例分组。正确做法是用 --group-by + --filter 显式标注来源:

  • 每台服务器导出时加标识:pt-query-digest --filter '$event->{server_id} = "prod-app-01"' /var/log/mysql/slow.log > prod-app-01.digest
  • 或统一读取并打标:pt-query-digest --filter '$event->{server_id} = "prod-db-02"' /data/logs/db2/slow.log --filter '$event->{server_id} = "prod-db-03"' /data/logs/db3/slow.log
  • --group-by fingerprint,server_id 是关键,否则所有实例的相同 SQL 会合并成一条,失去实例维度

MySQL 8.0+ 的 performance_schema 没法直接替代 slow log 聚合

有人想绕过日志文件,直接查各实例的 performance_schema.events_statements_summary_by_digest——这只能看“当前累积”,不能回溯历史、无法跨时段比对,而且默认只保留 10000 条摘要,高频小查询容易被刷掉。

更现实的用法是把它当辅助:用 SELECT DIGEST_TEXT, COUNT_STAR, SUM_TIMER_WAIT FROM performance_schema.events_statements_summary_by_digest ORDER BY SUM_TIMER_WAIT DESC LIMIT 20 快速定位当前最耗时的指纹,但别指望靠它做周粒度趋势分析。

  • slow log 是磁盘持久化的原始记录,performance_schema 是内存中滚动摘要,二者用途不同
  • performance_schema 不记录 Query_time 和 Lock_time 的原始值,只有聚合后的 SUM_TIMER_WAIT,没法算 P95 延迟
  • 开启 performance_schema 对高并发实例有 3%–5% 性能损耗,而 slow log 开销可控(尤其配合 long_query_time = 1)

Grafana 仪表盘里怎么让不同实例的慢查询指标可对比

核心是别在 Grafana 里硬写多个数据源,先在后端统一建模。推荐用 Prometheus + mysqld_exporter,但注意:它默认不暴露慢查询统计,得手动开启 --collect.global_status --collect.info_schema.processlist,再配合自定义 SQL 抓取慢查询计数:

  • 在每台 MySQL 上建视图:CREATE VIEW slow_count_1h AS SELECT COUNT(*) c FROM mysql.slow_log WHERE start_time > NOW() - INTERVAL 1 HOUR
  • 配置 mysqld_exporter 的 custom_queries.yml,执行该视图并暴露为 mysql_slow_query_count_1h 指标
  • Grafana 中用 sum by (instance) (mysql_slow_query_count_1h) 就能横向对比,且天然带 instance 标签

如果强行用 Loki 收集原始 slow log 行,查询会极慢——一条慢日志平均 200 字节,一天 100 万条就是 200MB,Loki 的 regex 提取 + label 打标开销远高于预聚合。

为什么用 rsync + cron 同步日志到中心节点总出问题

不是 rsync 不行,是没处理好三个细节:文件锁、轮转竞争、时区偏移。MySQL 写 slow log 是追加模式,但 logrotate 一触发,旧文件可能还在被写入,rsync 就会复制到一半的脏内容。

  • 同步前加检查:lsof -t /var/log/mysql/slow.log >/dev/null || rsync ...,避免拷贝正在写的文件
  • logrotate 配置必须加 copytruncate,而不是 create,否则 rsync 可能遇到文件消失
  • 所有服务器统一设为 UTC 时区,否则 pt-query-digest --since "2024-06-01 00:00:00" 在不同实例上含义不同

真正省心的做法是改用 mysqlbinlog 风格的流式采集:用 tail -F + awk 实时截取新日志行,打上 host=xxx 标签后发到 Kafka 或本地文件队列,再由消费者写入中心存储——但这需要额外运维成本,中小团队优先选 pt-query-digest 定期批处理。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
大数据分析工具有哪四个
大数据分析工具有哪四个

大数据分析的四个工具分别是rapidminer、Hpcc、Hadoop和Pentaho bi。大数据分析用于从各种来源生成的原始数据中提取有价值的数据。这些数据帮助我们获得有意义的见解、隐藏的模式、未知的相关性、市场趋势等等,具体取决于行业。大数据分析的主要动机是提供有价值的见解,以便为未来做出更好的决策。php中文网为大家带来了大数据分析的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

4556

5

Java 大数据处理基础(Hadoop 方向)
Java 大数据处理基础(Hadoop 方向)

本专题聚焦 Java 在大数据离线处理场景中的核心应用,系统讲解 Hadoop 生态的基本原理、HDFS 文件系统操作、MapReduce 编程模型、作业优化策略以及常见数据处理流程。通过实际示例(如日志分析、批处理任务),帮助学习者掌握使用 Java 构建高效大数据处理程序的完整方法。

2025.12.08

1229

12

大数据专业学习教程
大数据专业学习教程

本专题整合了大数据专业学习相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

223

5

python处理大数据合集
python处理大数据合集

本专题整合了python处理大数据相关教程,阅读专题下面的文章了解更多详细内容。

2026.01.05

466

22

服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2672

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

896

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习