MySQL日志1
1 错误日志
1.1. 介绍
错误日志是mysql中最主要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
当数据库出现任何故障导致无法使用时。建议首先查看此日志。
1.2. 配置
该日志是默认开启的,默认存放目录
/var/log/
,默认的日志文件名为 mysqld.log## 查看日志是否开启 show variables like '%log_error%'; # log_error stderr 输出到控制台,查看mysql配置文件的配置
2 二进制日志
2.1. 介绍
二进制日志(binlog)记录了所有的DDL(数据定义)语句和DML(数据操纵)语句,但不包括数据查询(select、show)语句
2.2. 作用
灾难时的数据恢复;
MySQL的主从复制;
2.3. 配置
show variables like '%log_bin%';
# log_bin_basename /var/lib/mysql/binlog 地址及前缀 binlog.000001 ……
# log_bin_index /var/lib/mysql/binlog.index binlog索引文件
2.4. 日志格式
MySQL服务器中提供了多种格式来记录二进制日志,具体格式如下
日志格式 含义 STATEMENT 基于SQL语句的日志记录,记录的是SQL语句,对数据进行修改的SQL都会记录在日志文件中。 ROW 基于行的日志记录,记录的是每一行的数据变更。(默认) MIXED 混合了STATMENT和ROW两种格式,默认采用STATEMENT,在某些特殊情况下自动切换为ROW进行记录。 show variables like '%binlog_format%';
2.5. 日志查看
由于日志是以二进制的方式存储的,不能直接读取,需要通过二进制日志查询工具mysqlbinlog来查看
1 2 3 4 5 6 7 8 mysqlbinlog [options] logfilename options: -d #指定数据库名称,只列出指定的数据库相关操作。 -o #忽略掉日志中前n行命令。 -v #将事件(数据变更)重构为SQL语句 -vv #将事件(数据变更)重构为SQL语句,并输出注释信息 e.g.: mysqlbinlog -v binlog.000007
2.6. 日志删除
对于比较繁忙的业务系统,每天生成的binlog数据巨大,如果长时间不清除,将会占用大量磁盘空间。可以通过以下几种方式清理日志:
指令 含义 reset master 删除全部binlog日志,删除之后,日志编号将从binlog.000001重新开始 purge master logs to ‘binlog.000XXX’ 删除 ******
编号之前的所有日志purge master logs before ‘yyyy-mm-dd hh24:mi:ss’ 删除日志为 yyyy-mm-dd hh24:mi:ss
之前产生的所有日志
配置
可以在mysql的配置文件中配置二进制日志的过期时间,设置了之后,二进制日志会自动删除
show variables like '%binlog_expire_logs_seconds%'; # 2592000 默认30天
3 查询日志
3.1. 介绍
查询日志中记录了客户端的所有操作语句,而二进制日志不包含查询数据的SQL语句。默认情况下,查询日志是 未开启 的。
3.2. 配置
查看查询日志配置
show variables like '%general%';
开启 查询日志
1 2 3 4
## 该选项用来开启查询日志,0:关闭 1:开启 general_log=1 ## 设置日志的文件名,如果没有指定,默认的文件名为 host_name.log general_lof_file=/var/lib/mysql/mysql_query.log
4 慢查询日志
慢查询日志记录了所有执行时间超过参数 long_query_time 设置值并且扫描记录数不小于min_examined_row_limit 的所有SQL语句的日志,默认开启。
long_query_time 默认10秒,最小为 0,精度可到微秒。
日志位置:
/var/lib/mysql/localhost-slow.log
1 2 3 4 ## 慢查询日志开关 slow_query_log=1 ## 慢查询时间参数 long_query_time=2默认情况下,不会记录管理语句,也不会记录不使用索引进行查找的查询。
可以使用 log_slow_admin_statments 和 log_queries_not_using_indexes 更改此行为
1 2 3 4 ## 记录执行较慢的管理语句 log_slow_admin_statements=1 ## 记录执行较慢的未使用索引的语句 log_queries_not_using_indexes=1