如何获得 pt-upgrade(Percona 工具包)以在数据库上进行上下文切换

How to get pt-upgrade (Percona toolkit) to context switch on databases

我正在尝试使用 Percona Toolkit 中的 pt-upgrade 来测试 运行 在 MySQL 5.1 和 MySQL 5.6 数据库服务器上加载。我想看看我从 MySQL 5.1 慢速日志中捕获的任何查询在 MySQL 5.6 系统上是否会失败。我阅读了 https://www.percona.com/doc/percona-toolkit/2.2/pt-upgrade.html 的文档并创建了以下命令:

pt-upgrade h=IPADDRESS1 -uUSERNAME -pPASSWORD  h=IPADDRESS2 uUSERNAME -pPASSWORD --type='slowlog' --max-class-size=1 --max-examples=1  --run-time=1m 'slow_log_mysqld.log' 1>report.txt 2>err.txt &

我将慢速日志所在的所有数据库的副本恢复到两个单独的服务器上。

我的命令工作正常,我将其设置为仅 运行 1 分钟以进行测试。问题是我在报告中看到的是查询在两台主机上一遍又一遍地失败。

On both hosts:

DBD::mysql::st execute failed: No database selected [for Statement "....

pt-upgrade 似乎没有更改数据库。

我查看了慢速查询日志,我在每个 SELECT 语句之前清楚地看到这样的语句:

  4                 9640337 Query   USE database1
  9                 9640337 Query   USE database2

我在服务器上有超过 10000 个数据库,我的日志很慢。 pt-upgrade 不能在数据库之间切换有什么限制吗?我如何获得 pt-upgrade 以使用多个数据库?

我的系统上慢日志的格式似乎有些奇怪。 在我可以 运行 pt-upgrade 之前,我必须先 "massage" 我的日志与 pt-query-digest 。这是我如何 运行 使用 pt-query-digest 在我的慢日志上进行按摩:

pt-query-digest --filter '$event->{arg} =~ m/^select/i' --sample 5 --no-report --output slowlog mysql_slow.log > massaged_mysql_slow.log

现在我可以运行这个:

pt-upgrade h=IPADDRESS1 -uUSERNAME -pPASSWORD  h=IPADDRESS2 uUSERNAME -pPASSWORD --type='slowlog' --max-class-size=1 --max-examples=1  --run-time=1m 'massaged_mysql_slow.log' 1>report.txt 2>err.txt &