MySQL——日志管理
一、MySQL日志类型
1、错误:--log--error ---------------------***
host_name.err
2、常规: --general_log
host_name.log general_log
3、慢速查询: --slow_query_log --long_query_time ---------------------***
host_name-slow.log slow_log
4、二进制: --log-bin --expire-logs-days ---------------------***
host_name-bin.000001
5、审计: --audit_log --audit_log_file
audit.log
二、MySQL日志配置
(1)错误日志
[mysqld]
log-error=/data/mysql/mysql.log
查看配置:
show variables like '%log%error%';
作用:
记录MySQL数据库的一般状态信息和报错信息,是我们对于数据库常规报错处理的常用日志。
(2)一般查询日志
[mysqld]
general_log=on
general_log_file=路径
作用:
记录所有执行成功的SQL语句信息。
查看方式:
show variables like '%gen%';
(3)二进制日志(依赖于SQL层,不依赖于存储引擎)(不记录select,只记录变化)
1、记录已经执行完成的语句和已经完成的事务
2、功能:备份和时间点恢复、主从
3、二进制日志的控制和操作:
a: 开启二进制日志:
vim /etc/my.cnf
[mysqld]
log-bin=“datadir”/mysql-bin(文件名前缀)(不写路径默认是datadir下)
b: 定义记录方式:
statement: 记录执行的语句
row(推荐):以行模式记录---->记录所有行的变化日志
mixed:
c: 设置:
vim /etc/my.cnf
[mysqld]
log-bin=“datadir”/mysql-bin
binlog-format=row
d: 操作:
1)查看二进制日志:
--查看文件本身:
--操作系统层面查看:
ls -l
重启数据库的时候、执行flush命令的时候会滚动----生成新的文件重新记录
--mysql命令行中查看:
show master status;----查看当前正在使用的二进制日志
show binary logs;----查看所有存在的二进制日志
--查看文件内容:
---- 事件events: 命令的最小发生单元
---- 事件的位置号position: 每个事件在二进制文件中的相对位置号就是position号
---- 查看二进制日志内容:
--查看所有内容:
进入目录下:
mysqlbinlog mysql-bin.000003
--截取内容:
1 show master status;
2 show binlog events in 'mysql-bin.000003' ;
3 mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003
导出:mysqlbinlog --start-position=120 --stop-position=339 mysql-bin.000003 >/tmp/inc.sql
4 导出的内容可以用来恢复:
1)使用source
2)使用 <
2)删除二进制日志:
在配置文件中加上过期时间: SET GLOBAL expire_logs_days=30;(天)
或者:
PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day;
根据文件名删除日志:
PURGE BINARY LOGS TO 'mysql-bin.0000010';
(4)慢查询日志
1、功能:记录所有条件内的慢的SQL语句
2、作用:定位问题的工具日志
3、控制:
vim /etc/my.cnf
[mysqld]
slow_query_log=on ------------------------------开启
slow_query_log_file=/data/slow.log -------------定义文件
long_query_time=10 -----------------------------超过30秒为操作慢的语句
min_examined_row_limit=10-----------------------查询检查返回少于该参数指定行的SQL语句不被记录到慢日志
log_queries_not_using_indexes-------------------不使用索引的慢查询日志是否记录到索引
4、处理:
mysqldumpslow -s c -t 10 /database/mysql/slow-log
输出记录次数最多的10条SQL语句,其中:
-s: 表示按照何种方式排序,c t l r分别为按照记录次数、时间、查询时间、返回的记录数来排序,
ac at al ar为相应的倒叙
-t: 返回前面多少条的数据
-g: 后边可以接正则匹配模式,大小写不敏感

浙公网安备 33010602011771号