mariadb – 管道进程5(迭代)导致错误:sprintf中的冗余参数位于/usr/bin/pt-query-digest第2556行

我使用percona-toolkit来分析 mysql-slow-query(logs).所以命令非常基本:

pt-query-digest slowquery.log

现在结果(错误)是:

18.2s用户时间,100ms系统时间,35.61M rss,105.19M vsz

当前日期:2016年7月7日星期四17:18:43

主机名:Jammer

文件:slowquery.log

管道进程5(迭代)导致错误:sprintf中的冗余参数位于/usr/bin/pt-query-digest第2556行.
将重试管道进程4(迭代)2次.

..
..(相同的结果打印两次)
..

管道导致错误:管道进程5(迭代)导致错误:sprintf中的冗余参数位于/usr/bin/pt-query-digest第2556行.
终止管道,因为进程4(迭代)导致了太多错误.

现在有关环境的细节,我使用的是Ubuntu 16.04,MariaDB 10.1.14,Percona-Toolkit 2.2.16

我在bug-report找到了一些东西,但它就像一个解决方法,并没有真正解决错误.即使在应用补丁之后,命令结果看起来也不够令人满意.

我在ubuntu 16.04 MySql上面临同样的问题.
我的慢查询日志的内容如下.

/usr/sbin / mysqld,版本:5.7.16-0ubuntu0.16.04.1-log((Ubuntu)).开始于:
Tcp端口:3306 Unix套接字:/var/run/mysqld/mysqld.sock
时间Id命令参数
/usr/sbin / mysqld,版本:5.7.16-0ubuntu0.16.04.1-log((Ubuntu)).开始于:
Tcp端口:3306 Unix套接字:/var/run/mysqld/mysqld.sock
时间Id命令参数
时间:2016-12-08T05:13:55.140764Z
User @ Host:root [root] @ localhost [] Id:20
Query_time:0.003770 Lock_time:0.000200 Rows_sent:1 Rows_examined:2
SET时间戳= 1481174035;
SELECT COUNT(*)FROM INFORMATION_SCHEMA.TRIGGERS;

错误是一样的:

管道导致错误:管道流程5(迭代)导致了一个错误
错误:sprintf中的冗余参数位于/usr/bin/pt-query-digest第2556行.

Ubuntu 16.04
MySql Ver 14.14 Distrib 5.7.16
pt-query-digest 2.2.16

该错误似乎在当前版本的工具包(2.2.20)中得到修复,显然在之前版本中从2.2.17开始修复.

这个补丁似乎可以解决pt-query-digest中这个特定的地方:

--- percona-toolkit-2.2.16/bin/pt-query-digest  2015-11-06 14:56:23.000000000 -0500
+++ percona-toolkit-2.2.20/bin/pt-query-digest  2016-12-06 17:01:51.000000000 -0500
@@ -2555,8 +2583,8 @@
    }
    return sprintf(
       $num =~ m/\./ || $n
-         ? "%.${p}f%s"
-         : '%d',+         ? '%1$.'.$p.'f%2$s'
+         : '%1$d',$num,$units[$n]);
 }

但正如原始问题和错误报告中所提到的,相当多的工具/功能受到影响,完整的错误修复包括许多小的更改:
https://github.com/percona/percona-toolkit/pull/73/files

相关文章

文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预...
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载U...
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装...
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standa...
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主...