Mysql 日志管理
          目录
          
        
        
      
        警告
      
      本文最后更新于 2022-06-28,文中内容可能已过时。
      1. Mysql 日志管理
1.1. 类型
| 日志文件 | 选项 | 文件名(表名称) | 程序 | 
|---|---|---|---|
| 错误 | --log-error | host_name.err | N/A | 
| 常规 | --general_log | host_name.loggeneral_log | N/A | 
| 慢(速)查询 | --slow_query_log--long_query_time | host_name-show.logshow_log | mysqldumpslow | 
| 二进制 | --log-bin--expire-logs-days | host_name-bin.000001 | mysqlbinlog | 
| 审计 | --audit_log--audit_log_file | audit.log | N/A | 
1.2. 错误日志
- 配置方法:
1 2[mysqld] log-error=/var/log/mysql/mysql.log
- 查看方法
- mysql> show variables like '%log_error%
 
- 作用
- 记录mysql数据库的一般状态及报错信息,是我们对于数据库常规报错处理的常用日志
 
- 记录
1.3. 常规日志
- 配置方法
|  |  | 
- 查看方法
- show variables like '%gen%'
 
- 作用
- 记录mysql所有执行成功的语句,可以作审计用,但很少开启
 
- 记录
1.4. 二进制日志(binlog)
- 
二进制日志会记录已提交的数据,以 event的形式记录到二进制文件中,其常用的记录格式有:- 
row: 行模式,即数据行的变化过程,将某一个值修改到另一个值的过程(建议及常用模式) TODO: mysql 配置文件中是否区分大小写(这个需要根据官方建议核查)
- 
statement: 语句模式,直接记录执行过的语句,其优点是记录的数据好分析,数据量级小,比如批量修改,缺点就是记录函数(如:now())类操作不是特别准确(默认模式show variables like '%binlog_format%');
- 
mixed: 以上两种的混合模式
 
- 
- 
开启、关闭及记录格式 
|  |  | 
- sync_binlog值为- 1时,每次事务提交时就向磁盘进行写入
1.5. binlog 管理
pos: 开始位置号
End_log_pos: 结束位置号
- 查看当前所有二进制日志可用信息: show binary logs;
- 当前正在使用的binlog日志:show master status
- 查看二进制日志中记录的事件: show binlog events in 'mysql-bin.000002';
|  |  | 
- 查看二进制文件内容(mysqlbinlog可能不会识别default-character-set=utf8这个指令,报错为unknown variable,解决指定参数--no-defaults) TODO: unknown variable ‘default-character-set=utf8’(这个不识别就不识别吧,具体不是很清楚,也没有咨询到解决方案)
|  |  | 
1.6. 慢日志管理 (my.cnf 中配置无顺序要求)
- 
show variables like '%slow%'
- 
show variables like '%long%
- 
show variables like '%indexes%'
- 
查询 - 是将mysql服务中影响数据库性能的相关sql语句记录到日志文件中
- 通过对这些特殊的sql语句分析,改进以达到提高数据库性能的目的
 
- 是将
- 
设置 - long_query_time: 设定慢查询的阀值,超出设定值的sql即被记录到慢查询日志,缺省值为- 10s
- show_query_log: 指定是否开启慢查询日志
- slow_query_log_file: 指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件- host_name-slow.log
- min_examined_row_limit: 查询检查返回少于改参数指定行的sql不会记录到慢查询日志
- log_queries_not_using_indexes: 不使用索引的慢查询日志是否记录到索引
 
- 
mysqldumpslow(扩展命令mysqlsla、pt-query-diagest percona-toolkit)
 导出host_name-slow.log日志中执行次数最多的前10条数据mysqldumpslow -s c -t 10 host_name-slow.log
- 
导出 host_name-slow.log日志中平均执行时间的前10条数据mysqldumpslow -s at -t 10 host_name-slow.log