You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询通用日志记录的某时间段内执行的DDL语句(CREATE/ALTER/DROP)

筛选通用日志中指定时间段DDL语句的方法

注意:操作前请确认通用日志的采集范围为全量查询,若配置了过滤规则、仅记录指定账号操作,筛选结果可能存在遗漏。


场景1:通用日志存储在MySQL系统表 mysql.general_log 中

直接执行以下SQL查询即可,注意替换语句中的时间范围为你需要的实际查询区间:

SELECT event_time, user_host, argument 
FROM mysql.general_log
WHERE 
  event_time BETWEEN '2024-01-01 00:00:00' AND '2024-01-07 23:59:59'
  AND command_type = 'Query'
  AND (
    UPPER(TRIM(argument)) LIKE 'CREATE%'
    OR UPPER(TRIM(argument)) LIKE 'ALTER%'
    OR UPPER(TRIM(argument)) LIKE 'DROP%'
  )
ORDER BY event_time ASC;

相关参数说明:

  • UPPER(TRIM(argument)) 用于兼容SQL语句开头带空格、关键词大小写不统一的场景
  • 若需要排除系统自动执行的内置操作,可额外增加user_host过滤条件剔除系统账号、运维账号的操作记录

场景2:通用日志以文本文件形式存储

Linux/macOS环境下可以用awk+grep组合命令精准筛选,示例如下:

# 先替换时间范围为你需要的查询区间
awk '$1 >= "2024-01-01" && $1 <= "2024-01-07" && $2 >= "00:00:00" && $2 <= "23:59:59"' /var/log/mysql/general.log | grep -iE '^( |\t)*(CREATE|ALTER|DROP)'

相关参数说明:

  • -i 参数表示忽略大小写,兼容SQL关键词大小写混写的情况
  • 命令默认适配通用日志前两列为日期、时间的标准格式,若你的日志时间格式有自定义调整,需对应修改awk的字段匹配规则
  • Windows环境可以直接用文本编辑器的全局筛选功能,先匹配时间范围再搜索三类关键词即可

内容的提问来源于stack exchange,提问作者c_minn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:24:07