【问题标题】:How to list the DDL statements (CREATE, ALTER, DROP) processed in a period of time when a general log was recorded?如何列出记录一般日志的一段时间内处理的DDL语句(CREATE、ALTER、DROP)?
【发布时间】:2021-12-29 09:20:41
【问题描述】:

如何列出记录一般日志的一段时间内处理的DDL语句(CREATE、ALTER、DROP)?

【问题讨论】:

    标签: mysql ddl


    【解决方案1】:

    我可以通过这种方式使用 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 行。

    也许您可以跳过日期范围选项并自己观察输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2018-03-16
      相关资源
      最近更新 更多