Percona Toolkit是一套为MySQL设计的高级工具集,它提供了许多强大的工具来帮助数据库管理员和开发者进行数据库的性能优化、故障排查和数据一致性检查。
在基于 Red Hat 的系统(例如 CentOS、Fedora 或 RHEL)上,您可以使用 yum 包管理器来安装 Percona Toolkit。以下是安装步骤:
#步骤 1:添加 Percona 仓库
首先,添加 Percona 的官方仓库到您的系统仓库列表。这通过安装 Percona 提供的仓库配置包来实现。
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
#步骤 2:启用 Percona 仓库
安装完仓库配置包后,您需要启用 Percona 仓库。Percona release 包包含多个仓库,通常需要启用其中一个。
sudo percona-release enable tools release
在开始之前,您需要确保Percona Toolkit安装在运行MySQL的服务器上。安装方法如下:
# Debian或Ubuntu系统
sudo apt-get install percona-toolkit
# Red Hat或CentOS系统
sudo yum install percona-toolkit
# macOS(使用Homebrew)
brew install percona-toolkit
以yum安装为例,安装后,默认会把相关pt工具安装至/usr/bin/目录下,可以通过输入 pt-query-digest --version 来确认安装是否成功。

pt-query-digest 工具用于分析和优化MySQL查询,通过分析慢查询日志来发现潜在的性能瓶颈。
# 分析慢查询日志
pt-query-digest /path/to/slow.log > report.txt
这两个工具通常一起使用来检查和解决复制过程中的数据不一致问题。
# 使用pt-table-checksum校验数据一致性
pt-table-checksum h=localhost,u=root,p=password
# 使用pt-table-sync解决数据不一致的问题
pt-table-sync --execute h=master-host,u=root,p=password D=database,t=table h=slave-host
pt-stalk 用于监控和诊断MySQL的问题,当满足指定条件时自动收集数据。
# 监控并在负载超过30时收集数据
pt-stalk --config /path/to/pt-stalk.conf --dest /path/to/dest/ --threshold 30
在MySQL环境中,对大表执行DDL操作(如ALTER TABLE)可能会消耗大量时间和系统资源,同时在操作过程中会对表加锁,影响在线服务的正常运行。Percona Toolkit中的 pt-online-schema-change 工具可以在不锁表的情况下执行DDL操作,让表的更改过程对在线业务透明。
pt-online-schema-change \
D=database,t=table,h=localhost \
--alter "ADD COLUMN new_column INT(11) NOT NULL DEFAULT '0'" \
--execute
这个命令会对 database 数据库中的 table 表添加一个新列 new_column。--execute 选项指示工具立即执行DDL更改。
pt-online-schema-change 的原理是:
1. 创建与原表结构相同的空表,并应用DDL更改。
2. 在新表中复制原表的数据,这个过程中原表仍然可以正常使用。
3. 使用触发器捕捉在复制期间对原表进行的更改。
4. 数据复制完成后,将原表重命名,用新修改的表替换。
这种方法可以最大限度地减少DDL操作对在线服务的影响。
• 性能优化: 通过详细的日志分析,找到并解决慢查询问题。
• 数据一致性: 确保主从复制环境中数据的一致性。
• 最小化停机时间: 使用 pt-online-schema-change 对大表进行修改时减少了停机时间。
Percona Toolkit 是一个强大的工具集,对于希望优化MySQL性能和确保数据一致性的数据库管理员来说,是必不可少的。当然作为一个RD,能了解并学会使用Percona Toolkit的情况下,我们能够以最小的代价执行原本可能会非常耗时和危险的操作。
这篇博客为你提供了一个关于如何使用Percona Toolkit以及特别是如何使用 pt-online-schema-change 进行大表DDL操作的综合概述。希望这能够帮助你更好地理解和使用这个强大的工具集。毕竟小编经常所在的小组没有DBA,经常都是需要RD自己管理操作数据库,上次我自己就使用pt工具操作了100张大表的字段添加,虽然拷贝数据的过程中会花费较长的时间,但能效果杠杠的,因此推荐操作大表DDL时尽量使用pt工具进行操作,避免直接操作原表时锁表对在线服务带来的影响。