MySQL 四类日志总结

38 阅读2分钟

1. 错误日志

  • 记录内容:mysqld 启动 / 停止信息、运行中严重错误
  • 作用:数据库故障时优先排查的日志
  • 默认状态:开启
  • 默认存储:目录/var/log/,文件名mysqld.log
  • 查看位置show variables like '%log_error%'

2. 二进制日志(BINLOG)

  • 记录内容:DDL、DML 语句(不含 SELECT/SHOW 等查询)

  • 作用:数据恢复、主从复制

  • 默认状态:MySQL8 默认开启

  • 查看参数show variables like '%log_bin%'

  • 日志格式

    格式含义
    statement记录行修改的 SQL 语句
    row记录每一行的数据变更(默认)
    mixed混合 statement 和 row,默认用 statement,特殊情况自动切 row
  • 查看格式show variables like '%binlog_format%'

  • 日志查看:需用mysqlbinlog工具,语法:

    mysqlbinlog [参数] 日志文件名
    参数:-d(指定数据库)、-o(忽略前n行)、-v(重构数据变更为SQL)
    
  • 日志清理

    指令含义
    reset master删除全部 binlog,从 binlog.000001 重新开始
    purge master logs to 'binlog.***'删除 *** 编号前的所有日志
    purge master logs before '时间'删除指定时间前的所有日志
  • 自动过期:默认 30 天,查看参数:show variables like '%binlog_expire_logs_seconds%'

3. 查询日志

  • 记录内容:客户端所有操作语句(日志体积大)

  • 默认状态:关闭

  • 开启方式:修改/etc/my.cnf,添加:

    general_log=1  # 1开启、0关闭
    general_log_file=mysql_query.log  # 日志文件名
    

4. 慢查询日志

  • 记录条件:SQL 需同时满足

    1. 执行时间 > long_query_time(默认 10 秒,最小 0,精度到微秒)
    2. 扫描记录数 ≥ min_examined_row_limit
  • 默认状态:未开启

  • 开启 / 配置方式:修改配置文件,添加:

    slow_query_log=1  # 开启慢查询日志
    long_query_time=2  # 执行时间阈值(示例设为2秒)
    log_slow_admin_statements=1  # 记录慢管理语句
    log_queries_not_using_indexes=1  # 记录慢且未用索引的语句