#mysql #ddl
Вопрос:
Как перечислить инструкции DDL (СОЗДАТЬ, ИЗМЕНИТЬ, УДАЛИТЬ), обработанные за период времени, когда был записан общий журнал?
Ответ №1:
Я смог использовать pt-query-digest (бесплатный инструмент командной строки, часть инструментария Percona) таким образом:
pt-query-digest --type genlog --no-report --output slowlog --filter '$event-gt;{fingerprint} =~ /^create|alter|drop/' /usr/local/var/mysql/bkarwin.log
Выход:
# Time: 2021-11-18T16:16:53.452721Z # Thread_id: 24 # Query_time: 0.000000 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 create table foo (i int); # Time: 2021-11-18T16:16:54.805065Z # Thread_id: 24 # Query_time: 0.000000 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 drop table foo;
Эти два оператора являются просто тестовыми операторами DDL, которые я запустил после включения общего журнала запросов в моем экземпляре MySQL на локальном хосте.
Инструмент pt-query-digest также имеет опции для ограничения диапазона дат --since
и --until
. Но я получил ошибку, когда попробовал это сделать. Похоже, у него были проблемы с форматом даты.
Процесс конвейера 5 (с) вызвал ошибку: аргумент «2021-11-18T16:16:53.452721 Z» не является числовым в числовом ge (gt;=) в /usr/local/bin/pt-строка дайджеста запроса 13660, gt;lt;$fhgt; строка 2.
Возможно, вы можете просто пропустить параметры диапазона дат и посмотреть на результат самостоятельно.