Percona Toolkit moved to 2.2.1

Milestone information

Percona Toolkit moved to
Daniel Nichter
Release registered:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata


Assigned to you:
No blueprints or bugs assigned to you.
7 Brian Fraser, 10 Daniel Nichter, 2 Ignacio Nin
8 Implemented
11 Fix Released

Download files for this release

File Description Downloads

Release notes 

Percona Toolkit 2.2.1 has been released. This is the first release in the new 2.2 series which supersedes the 2.1 series and renders the 2.0 series obsolete. We plan to do one more bug fix release for 2.1 (2.1.10), but otherwise all new development and fixes and will now focus on 2.2.

Percona Toolkit 2.2 has been several months in the making, and it turned out very well, with many more new features, changes, and improvements than originally anticipated. Here are the highlights:


* Official support for MySQL 5.6

We started beta support for MySQL 5.6 in 2.1.8 when 5.6 was still beta. Now that 5.6 is GA, so is our support for it. Check out the Percona Toolkit supported platforms and versions:

When you upgrade to MySQL 5.6, be sure to upgrade to Percona Toolkit 2.2, too.

* Official support for Percona XtraDB Cluster (PXC)

We also started beta support for Percona XtraDB Cluster in 2.1.8, but now that support is official in 2.2 because we have had many months to work with PXC and figure out which tools work with it and how. There's still one noticeable omission: pt-table-sync. It's still unclear if or how one would sync a cluster that, in theory, doesn't become out-of-sync. As Percona XtraDB Cluster develops, Percona Toolkit will continue to evolve to support it.

* pt-online-schema-change (pt-osc) is much more resilient

pt-online-schema-change 2.1 has been a great success, and people have been using it for evermore difficult and challenging tasks. Consequently, we needed to make it "try harder", even though it already tried pretty hard to keep working despite recoverable errors and such. Whereas pt-osc 2.1 only retries certain operations, pt-osc 2.2 retries every critical operation, and its tries and wait time between tries for all operations are configurable. Also, we removed --lock-wait-timeout which set innodb_lock_wait_timeout because that now conflicts, or is at least confused with, lock_wait_timeout (introduced in MySQL 5.5) for metadata locks. Now --set-vars is used to set both of these (or any) system variables. For a quick intro to metadata locks and how they may affect you, see Ovais's article:

What does this all mean? In short: pt-online-schema-change 2.2 is far more resilient out of the box. It's also aware of metadata locks now, whereas 2.1 was not really aware of them. And it's highly configurable, so you can make the tool try _very_ hard to keep working.

* pt-upgrade is brand-new

pt-upgrade was written once long ago, thrown into the world, and then never heard from again... until now. Now that we have four base versions of MySQL (5.0, 5.1, 5.5, and 5.6), plus at least four major forks (Percona Server, MariaDB, Percona XtraDB Cluster, and MariaDB Galera Cluster), upgrades are fashionable, so to speak. Problem is: "original" pt-upgrade was too noisy and too complex. pt-upgrade 2.2 is far simpler and far easier to use. It's basically what you expect from such a tool.

Moreover, it has a really helpful new feature: "reference results", i.e. saved results from running queries on a server. Granted, this can take _a lot_ of disk space, but it allows you to "run now, compare later."

If you're thinking about upgrading, give pt-upgrade a try. It also reads every type of log now (slow, general, binary, and tcpdump), so you shouldn't have a problem finding queries to run and compare.

* pt-query-digest is simpler

pt-query-digest 2.2 has fewer options now. Basically, we re-focused it on its primary objective: analyzing MySQL query logs. So the ability to parse memcached, Postgres, Apache, and other logs was removed. We also removed several options that probably nobody ever used, and changed/renamed other options to be more logical. The result is a simpler, more focused tool, i.e. less overwhelming.

Also, pt-query-digest 2.2 can save results in JSON format (--output=json). This feature is still in development while we determine the optimal JSON structure.

* Version check is on by default

Way back in 2.1.4, released September/October 2012, we introduced a feature called "version check" into most tools: It's like a lot of software that automatically checks for updates, but it's also more: it's a free service from Percona that advises when certain programs (Percona Toolkit tools, MySQL, Perl, etc.) are either out of date or are known bad versions. For example, there are two versions of the DBD::mysql Perl module that have problems. And there are certain versions of MySQL that have critical bugs. Version check will warn you about these if your system is running them.

What's new in 2.2 is that, whereas this feature (specifically, the option in tools: --version-check) was off by default, now it's on by default. If the IO::Socket::SSL Perl module is installed (easily available through your package manager), it will use a secure (https) connection over the web, else it will use a standard (http) connection.

Check out for more information.

* pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player are gone

We removed pt-query-advisor, pt-tcp-model, pt-trend, and pt-log-player. Granted, no tool is ever really gone: if you need one of these tools, get it from 2.1. pt-log-player is now superseded by Percona Playback ( pt-query-advisor was removed so that we can focus our efforts on its online counterpart instead: The other tools were special projects that were not widely used.

* pt-stalk and pt-mysql-summary have built-in MySQL options

No more "pt-stalk -- -h db1 -u me". pt-stalk 2.2 and pt-mysql-summary 2.2 have all the standard MySQL options built-in, like other tools: --user, --host, --port, --password, --socket, --defaults-file. So now the command line is what you expect: pt-stalk -h dhb1 -u me.

* pt-stalk --no-stalk is no longer magical

Originally, pt-stalk --no-stalk was meant to simulate pt-collect, i.e. collect once and exit. To do that, the tool magically set some options and clobbered others, resulting in no way to do repeated collections at intervals. Now --no-stalk means only that: don't stalk, just collect, respecting --interval and --iterations as usual. So to collect once and exit: pt-stalk --no-stalk --iterations 1.

* pt-fk-error-logger and pt-deadlock-logger are standardized

Similar to the pt-stalk --no-stalk changes, pt-fk-error-logger and pt-deadlock-logger received mini overhauls in 2.2 to make their run-related options (--run-time, --interval, --iterations) standard. If you hadn't noticed, one tool would run forever by default, while the other would run once and exit. And each treated their run-related options a little differently. This magic is gone now: both tools run forever by default, so specify --iterations or --run-time to limit how long they run.


There were other miscellaneous bug fixes, too. See for the full list.

As the first release in a new series, 2.2 features are not yet finalized. In other words, we may change things like the pt-query-digest --output json format in future releases after receiving real-world feedback.

Percona Toolkit 2.2 is an exciting release with many helpful new features. Users are encouraged to begin upgrading, particularly given that, except for the forthcoming 2.1.10 release, no more work will be done on 2.1 (unless you're a Percona customer with a support contract or other agreement).

If you upgrade from 2.1 to 2.2, be sure to re-read tools' documentation to see what has changed because much as changed for certain tools.

Percona Toolkit packages can be downloaded from or the Percona Software Repositories (


This release does not have a changelog.

8 blueprints and 11 bugs targeted

Blueprint Priority Assignee Delivery
Auto version-check Auto version-check 5 Essential Daniel Nichter  11 Implemented
MySQL 5.6 Compatibility MySQL 5.6 Compatibility 5 Essential Daniel Nichter  11 Implemented
PXC-certified Tools PXC-certified Tools 5 Essential Daniel Nichter  11 Implemented
Simplify pt-query-digest Simplify pt-query-digest 5 Essential Brian Fraser  11 Implemented
MySQL options for pt-mysql-summary and pt-stalk MySQL options for pt-mysql-summary and pt-stalk 3 Medium Brian Fraser  11 Implemented
Overhaul pt-upgrade Overhaul pt-upgrade 3 Medium Daniel Nichter  11 Implemented
Remove pt-query-advisor Remove pt-query-advisor 3 Medium Brian Fraser  11 Implemented
pt-heartbeat option to handle read_only=1 servers pt-heartbeat option to handle read_only=1 servers 2 Low Brian Fraser  11 Implemented
Bug report Importance Assignee Status
1050654 #1050654 Add and to Provides of Percona-Server-shared-55 and Percona-XtraDB-Cluster-shared 3 High Ignacio Nin  10 Fix Released
1093016 #1093016 pt-online-schema-change doesn't retry RENAME TABLE 3 High Daniel Nichter  10 Fix Released
1113301 #1113301 pt-online-schema-change blocks on metadata locks 3 High Daniel Nichter  10 Fix Released
1008796 #1008796 Several tools don't have --database 4 Medium Brian Fraser  10 Fix Released
1019648 #1019648 pt-stalk truncates InnoDB status if there are too many transactions 4 Medium Daniel Nichter  10 Fix Released
1024530 #1024530 Can't rebuild percona-toolkit debian package 4 Medium Ignacio Nin  10 Fix Released
1056838 #1056838 pt-fk-error-logger --run-time works differently than pt-deadlock-logger --run-time 4 Medium Daniel Nichter  10 Fix Released
1086018 #1086018 pt-config-diff needs to parse wsrep_provider_options 4 Medium Brian Fraser  10 Fix Released
1087319 #1087319 Quoter::serialize_list() doesn't handle multiple NULL values 4 Medium Brian Fraser  10 Fix Released
1087804 #1087804 pt-table-checksum doesn't warn if no slaves are found 4 Medium Daniel Nichter  10 Fix Released
1125665 #1125665 pt-stalk --no-stalk silently clobbers other options, acts magically 4 Medium Daniel Nichter  10 Fix Released
This milestone contains Public information
Everyone can see this information.