【发布时间】:2021-12-29 09:20:41
【问题描述】:
如何列出记录一般日志的一段时间内处理的DDL语句(CREATE、ALTER、DROP)?
【问题讨论】:
如何列出记录一般日志的一段时间内处理的DDL语句(CREATE、ALTER、DROP)?
【问题讨论】:
我可以通过这种方式使用 pt-query-digest(一个免费的命令行工具,Percona Toolkit 的一部分):
pt-query-digest --type genlog --no-report --output slowlog \
--filter '$event->{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;
这两个语句只是我在本地 MySQL 实例上启用常规查询日志后运行的测试 DDL 语句。
pt-query-digest 工具还有用于限制日期范围的选项--since 和--until。但是我在尝试时遇到了错误。日期格式好像有问题。
管道进程 5(因为)导致错误:参数“2021-11-18T16:16:53.452721Z”在 /usr/local/bin/pt-query-digest 的数字 ge (>=) 中不是数字第 13660 行, 第 2 行。
也许您可以跳过日期范围选项并自己观察输出。
【讨论】: