在 Windows 上安装 Percona Toolkit
Percona Toolkit 是 Perl 脚本集合,官方只提供 Linux 仓库与包,没有 Windows 原生安装程序。但在 Windows 上仍有两条可行路径:
- 直接运行单个工具(Windows 原生):装好 Perl 运行环境,取单个脚本即可。纯 Perl 的分析类工具在 Windows 上能正常工作,最常见的
pt-query-digest慢查询分析就是这样用的。 - 跑完整工具集 / 依赖 Linux 的工具:用 WSL 或 Docker 起一套 Linux 环境,按 Linux 步骤安装整个 toolkit。
方式一:安装 Perl 后直接运行单个工具(Windows 原生)
适合只想用 pt-query-digest 等纯 Perl 工具、不想装 Linux 子系统的场景。本质做法是:装一个 Windows 上的 Perl,再从 percona.com/get/<工具名> 取对应脚本直接跑。
1. 安装 Strawberry Perl
Windows 默认不带 Perl,需要先装一个完整的 Perl 发行版。Strawberry Perl 是完全开源的 Windows Perl 环境,自带编译器与常用模块:
- 下载地址:http://strawberryperl.com/
- 下载安装版(
.msi)后双击按向导安装即可。
安装完成后打开 cmd,验证 Perl 可用:
perl -version环境变量
若提示 perl 不是内部或外部命令,说明安装目录未加入 PATH。请把 Strawberry Perl 的 perl\bin 目录(默认如 C:\Strawberry\perl\bin)加入系统环境变量 PATH,重新打开 cmd 后重试。
2. 获取单个工具脚本
Percona 提供按工具名取脚本的入口 percona.com/get/<工具名>。以 pt-query-digest 为例:
- 浏览器打开 https://www.percona.com/get/pt-query-digest
- 复制页面全部内容,保存为
pt-query-digest.pl
也可以把它放到 MySQL 的 bin 目录下(方便随 MySQL 调用),或放到任意你习惯的目录。
同理,其他纯 Perl 工具可替换
<工具名>,例如percona.com/get/pt-fingerprint、percona.com/get/pt-index-usage。
3. 运行工具
进入脚本所在目录,用 perl 解释器执行。下面是分析慢查询日志的常用写法:
REM 直接分析慢查询文件
perl pt-query-digest.pl "D:\software\MySQL\MySQL Server 5.7\Data\WIN-1OU3SGBLNIN-slow.log" > slow_report1.log
REM 只分析最近 12 小时
perl pt-query-digest.pl --since=12h "D:\software\MySQL\MySQL Server 5.7\Data\WIN-1OU3SGBLNIN-slow.log" > slow_report2.log
REM 分析某时间段
perl pt-query-digest.pl --since "2024-04-25 00:00:00" --until "2024-05-07 23:59:59" mysql.slow.log > slow_report3.log
REM 只分析 SELECT 语句
perl pt-query-digest.pl --filter "$event->{fingerprint} =~ m/^select/i" mysql.slow.log > slow_report4.log哪些工具能在 Windows 直接跑
这种方式只适合纯 Perl、不依赖 Linux 专有设施的工具,如 pt-query-digest、pt-fingerprint、pt-index-usage、pt-table-usage 等分析类工具。像 pt-stalk、pt-diskstats、pt-ioprofile、pt-sift、pt-pmp 这些依赖 /proc、系统命令或信号的工具在 Windows 上无法工作,请用下方的 WSL / Docker 方案。
方式二:WSL(Windows 子系统,适合完整工具集)
想要安装完整 Percona Toolkit、或用上述 Windows 不支持的工具时,推荐 WSL 跑一套 Linux:
1. 安装 WSL + Ubuntu
以管理员身份打开 PowerShell:
wsl --install默认安装 Ubuntu;如需指定发行版:wsl --install -d Ubuntu。安装完成后重启,按提示设置 Linux 用户名与密码。
2. 在 WSL 中按 Linux 步骤安装
打开 Ubuntu 终端,更新并安装(完整命令见 在 Linux 上安装):
sudo apt-get update
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
sudo apt-get update
sudo percona-release enable pt release
sudo apt-get install percona-toolkit3. 验证
pt-summary --version连接宿主机 MySQL
WSL2 与 Windows 不在同一 localhost。在 WSL 里连接 Windows 上的 MySQL 时,-h 127.0.0.1 或 localhost 通常不通,需把 -h 设为 Windows 宿主的实际 IP(WSL 中可用 cat /etc/resolv.conf 查看 nameserver,或直接使用宿主局域网 IP)。
方式三:Docker
不想装 WSL,也可以在容器里跑:
docker run --rm -it ubuntu:22.04 bash进入容器后按 在 Linux 上安装 的步骤安装 percona-toolkit;若日志在 Windows 上,挂载目录后运行:
docker run --rm -v D:/logs:/logs ubuntu-percona pt-query-digest /logs/mysql-slow.log如何选择
- 只想要
pt-query-digest等分析工具、图省事 → 方式一(Strawberry Perl),最贴近 Windows 原生。 - 要完整工具集、或用到依赖 Linux 的工具 → 方式二(WSL) 或 方式三(Docker)。
更多细节请阅读 官方文档。