2016-07-07 16 views
4

Я использую percona-toolkit для анализа mysql-slow-query (logs). Таким образом, команда довольно простая:Процесс Pipeline 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в строке/usr/bin/pt-query-digest 2556

пт-запрос-дайджест slowquery.log

Теперь результат (ошибка):

18.2s время пользователя, время 100мс системы, 35.61M Новости, 105.19M ВСЗ

Текущая дата: Чт Июл 7 17:18:43 2016

Hostname: Глушитель

файлы: slowquery.log

Процесс трубопровода 5 (итерация) вызвал ошибку: избыточный аргумент в sprintf в строке/usr/bin/pt-query-digest 2556. Повторно повторит процесс конвейера 4 (итерация) еще 2 раза.

.. .. (тот же результат печатает дважды) ..

Трубопровод вызвал ошибку: процесс трубопровода 5 (итерации) вызвал ошибку: Резервируемой аргумент в Sprintf в/USR/бен/PT- query-digest line 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 Аргумент команды Idle времени /usr/sbin/mysqld, Версия: 5.7.16-0ubuntu0.16.04.1-log ((Ubuntu)). начато с: Порт Tcp: 3306 Unix socket: /var/run/mysqld/mysqld.sock Команда времени Id аргумента Время: 2016-12-08T05: 13: 55.140764Z Пользователь @ Хост: root [root] @ localhost [] Id: 20 Query_time: 0.003770 Lock_time: 0.000200 Rows_sent: 1 Rows_examined: 2 SET timestamp = 1481174035; SELECT COUNT (*) FROM INFORMATION_SCHEMA.TRIGGERS;

Ошибка же:

Трубопровод вызвал ошибку: процесс трубопровода 5 (итерации) вызвал ошибку: Резервируемой аргумент в Sprintf в/USR/бен/PT-запрос-дайджест линии 2556.

Ubuntu 16,04 MySql Ver 14,14 Distrib 5.7.16 пт-запрос-дайджест 2.2.16

+0

У вас есть имя таблицы (или что-то еще) с '%' в ней? –

+0

эй @ Рикджимс, нет ничего подобного. У вас был шанс проверить сообщение об ошибке (ссылка выше). –

+0

хотя у меня есть это в моих запросах, где я использовал его для соответствия префикса и суффикса –

ответ

4

Исправлена ​​ошибка, по-видимому, фиксируется в текущей версии набора инструментальных средств (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