一、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: 后边可以接正则匹配模式,大小写不敏感