MySQL的日志默认保存位置在: /usr/local/mysql/data
MySQL常用日志类型及开启
vim /etc/my.cnf
[mysqld]
....
1、错误日志
用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
指定日志的保存位置和文件名
log-error=/usr/local/mysql/data/mysql_error.log
2、通用查询日志
用来记录MySQL的所有连接和语句,默认是关闭的
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
3、二进制日志(binlog)
用来记录所有当MySQL启动、停止或运行时发送的错误信息,默认是关闭的
log-bin=mysql-bin
或
log_bin=mysql-bin
4、慢查询日志
用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=2 ##设置超过2秒执行的语句被记录,默认的是10秒
查看日志状态
1、查看通用查询日志是否开启
mysql -u root -p
show variables like 'general%';
2、查看二进制日志是否开启
show variables like 'log_bin%';
3、查看慢查询日志功能是否开启
show variables like '%slow%';
查看慢查询时间的设置
show variables like 'long_query_time';
在数据库中设置开启慢查询的方法
set global slow_query_log=ON; ##临时有效 重启后失效
二进制日志三种格式
[mysqld]
log-bin=mysql-bin
binlog_format=MIXED
binlog_format=STATEMENT|ROW|MIXED
STATEMENT(基于SQL语句记录二进制日志,写入和恢复速度较快,在高并发情况中可能会出现SQL语句顺序记录偏差导致恢复时数据丢失) 老版本的默认模式
ROW(基于行记录记录二进制日志,写入和恢复速度较STATEMENT慢些,日志文件占用空间较大,但是准确性较高) 5.7默认模式
MIXED(混合模式,平时负载压力较小时使用SQL语句记录二进制日志,在高并发的情况会切换成基于记录二进制日志)