常用的 mysql 日志和使用场景

mysql 日志类型

error_log

  • 分析排除 mysql 运行错误
  • 记录未经授权的访问 | 指令 | 说明 | 备注 | | —- | —- | —- | | error_log=<dir_and_filename> | 启用 error_log ,设置文件名和保存目录 | | | log_error_verbosity=[1 | ``**2**`` | 3] |
    1. error 消息
    1. error、warning 消息
    1. eror、warning、note 消息
    | | | log_error_serivces=<日志组件列表(逗号分割``)> |
    - 列表如下
    - log_filter_internal
    - 默认的日志过滤组件,依赖 log_error_verbosity
    - 默认启用
    - log_sink_internal
    - 默认的日志输出组件,依赖 log_error
    - 默认启用
    - log_sink_json
    - 将错误日志输出到 json 文件
    - log_sink_syseventlog
    - 将错误日志输出到系统日志文件
    | 8.0 支持 |

general_log

  • 生成日志非常大 | 指令 | 说明 | | —- | —- | | general_log=[ON|``**OFF**``] | 是否启用 general_log,默认不启用 | | general_log_file = <dir_and_filename> | general_log 保存目录和文件名 | | log_output= [``**FILE **``| TABLE | NONE] | general_log 输出形式 |

slow_query_log

  • 将执行成功并且符合的查询进行记录
  • 用于查找需要优化的慢 sql | 指令 | 说明 | | | —- | —- | —- | | slow_query_log [ON | ``**OFF**``] | 是否开启 slow_query_log | | | slow_query_log_file = <dir_and_filename> | slow_query_log 保存的路径和文件名 | | | long_query_time=<number> | 慢查询阈值 | 默认 s | | log_queries_not_using_indexes= [ON | ``**OFF**``] | 是否开启查询未使用 index 就记录进日志 | | | log_slow_admin_statements = ``[ON &#124; ``**OFF**``] | 记录执行缓慢的管理SQL。如alter table,analyze table, check table, create index, drop index, optimize table, repair table等。 | | | log_slow_slave_statements = ``[ON &#124; ``**OFF**``] | 记录从库上执行的慢查询语句 | |

binary_log

  • 记录所有对数据库中数据的修改
  • 基于时间点的备份和恢复
  • 主从复制 | 指令 | 说明 | 备注 | | —- | —- | —- | | log-bin=<dir_or_filename> | 保存 binlog 的路径和文件名 | | | binlog_format=[``**ROW **``| STATEMENT | MIXED] | binlog 记录格式 | 推荐 ROW | | binlog_row_image={``**FULL **``| MINIMAL | NOBLOB} | binlog 格式为 row 时的内容格式 | | | binlog_rows_query_log_events= [ON | ``**OFF**``] | binlog 内容中是否记录 sql 语句 | | | log_slave_updates = [ON | ``**OFF**``] | 从节点的 binlog 也会记录从主节点复制过来的 binlog 记录 | | | sync_binlog=[``**1**`` | 0] | 刷新 binlog 到磁盘的方式;
    1: 写一次 binlog 就刷一次 | | | expire_logs_day =<timeout> | 开启 binlog 自动删除,设置时间间隔 | 手动删除: 在 sql 中键入
    1. PURGE BINARY LOGS TO <binlog-name>
    1. 删除 binlog-name 日志的编号之前的所有 binlog
    2. PURGE BINARY LOGS BEFORE <时间>
    1. 删除指定时间之前的 logs
    |

relay_log

  • 中继日志 | 指令 | 说明 | | —- | —- | | relay_log = <filename> | 启用 relay log,并且指明文件名和位置 | | relay_log_purge=[ON|OFF] | 是否启用自动清理 relay log 功能 |

使用场景

日志名称 作用 场景
error_log 记录 mysql 在启动、运行、停止时出现的问题
1. 分析排除 mysql 运行错误
1. 记录未经授权的访问
general_log 记录所有发向 mysql 的请求
slow_query_log 记录符合条件的查询
1. 将执行成功并且符合的查询进行记录
1. 用于查找需要优化的慢 sql
binary_log 记录全部有效的数据修改日志
1. 记录所有对数据库中数据的修改
1. 基于时间点的备份和恢复
1. 主从复制
relay_log
用于主从复制,临时存储从主库同步的二进制日志
1. 主从复制需要

如何通过日志来审计用户活动

todo