常用的 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 | ``**OFF**``]
| 记录执行缓慢的管理SQL。如alter table,analyze table, check table, create index, drop index, optimize table, repair table等。 | | |log_slow_slave_statements = ``[ON | ``**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