我正在尝试使用 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 之前,我必须先使用 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 &
关于mysql - 如何让 pt-upgrade(Percona 工具包)在数据库上进行上下文切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33577767/